Re saving images with Transparent background and uncompressed
    13 views (last 30 days)
  
       Show older comments
    
    Abdul Hannan Qureshi
 on 8 Mar 2024
  
    
    
    
    
    Edited: Abdul Hannan Qureshi
 on 9 Mar 2024
            Hi,
My query is very simple. I am basically renaming images *.JPG files. However, renamed and saved files are showing background and are compressed. 
How can I keep background transparent and can I save them as uncompressed. 
p=dir('Data\*.jpg'); %input files
filenames = {p.name};
nfiles = length(filenames);
for K = 1 : nfiles
    thisfile = filenames{K};
    [~, basename, ~] = fileparts(thisfile);
    newname = sprintf("%d.jpg", K);
    out_path = 'Data'; % Give path here
    fullFileName = fullfile(out_path, newname);
    data = imread(thisfile);
    imwrite(data, fullFileName);
end
0 Comments
Accepted Answer
  Florian Bidaud
      
 on 8 Mar 2024
        
      Edited: Florian Bidaud
      
 on 8 Mar 2024
  
      If you want to do stuff after loading the image and then save it without the background, you need to load with BackgroundColor = 'none'. But here I'm surprised as you use a jpg file, which cannot contains transparent pixels. Could you show an example of input and output of your image ?
data = imread(thisfile,BackgroundColor='none');
2 Comments
  DGM
      
      
 on 8 Mar 2024
				
      Edited: DGM
      
      
 on 8 Mar 2024
  
			This is correct.  There isn't any transparency information, at least not in a base JPG.  JPEG2000 does support transparency, but imread() can't read it, and imwrite() can't write it.  So either you have no transparency, or you do, and there's nothing you can do with it in MATLAB.
If you're editing JPGs from another source (e.g. a camera or photoshop), then avoid transcoding through MATLAB at all costs.  As a general rule, avoid ever writing to JPG if at all possible.  MATLAB cannot write anything but a 4:2:0 downsampled JPG (default is 75%).  As lossy JPGs go, that's a trash-quality JPG.  
EDIT:  imwrite() can write a 4:4:4 JPG or JP2, but only if the 'lossless' option is selected.  At that point, we have to question whether there's any point in using JPG/JP2 anymore, since a lot of things won't read a lossless JPG/JP2, and you're probably not getting any more compression than you would just using a widely-supported PNG.
More Answers (0)
See Also
Categories
				Find more on Convert Image Type in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

