Conversion of .BMP to .jpg images
    16 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Sean
 am 16 Feb. 2015
  
    
    
    
    
    Kommentiert: Eric
      
 am 17 Feb. 2015
            Im using the code below to convert .bmp images to .jpeg, Once typed into the command window no errors appear. However there are no new images written into the 'JPEG Data' folder, Can anyone help?
    %load images from file
    filePathIn = '.\Project\Matlab Folder\BMP Data';
    filePathOut = '.\Project\Matlab Folder\JPEG Data';
    %Load names of .bmp files in folder filePathIn
    d = dir([filePathIn,'*.bmp']);
    %for each .bmp file in the directory, convert to jpg
    for i = 1:length(d)   
        %read .bmp file
        fname = d(i).name;
        %BMP = imread([filePathIn,d(i).name]); 
        BMP = imread([filePathIn,fname]);
        %convert to jpg and rename with .jpg extension
        fname = [fname(1:end-4),'.jpg'];
        imwrite(BMP,[filePathIn,fname],'jpg');   
        %reload this file in .jpg format
        A = imread([filePathIn,fname]);
        rgbImage = repmat(A,[1 1 3]);
        %write jpg image to new folder
        imwrite(rgbImage,[filePathOut,fname],'JPEG','Quality',100);
    end
0 Kommentare
Akzeptierte Antwort
  Image Analyst
      
      
 am 16 Feb. 2015
        Sean, try this code:
% Demo to create JPG copies of BMP files in a different folder.
% By Image Analyst
% inputFolder = fileparts(which('cameraman.tif')) % Determine where demo folder is (works with all versions).
inputFolder = fullfile(pwd, 'Project\Matlab Folder\BMP Data');
filePattern = fullfile(inputFolder, '*.bmp')
% Get list of all BMP files in input folder
bmpFiles = dir(filePattern)
% Create the output folder:
outputFolder = fullfile(pwd, 'Project\Matlab Folder\JPEG Data')
if ~exist(outputFolder, 'dir')
  mkdir(outputFolder);
end
figure;
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Loop over all bmp files, making a jpg version 
% of them in the output folder.
for k = 1 : length(bmpFiles)
  % Read in .bmp file
  baseFileName = bmpFiles(k).name;
  fullFileNameInput = fullfile(inputFolder, baseFileName)
  rgbImage = imread(fullFileNameInput);
  subplot(1, 2, 1);
  imshow(rgbImage);
  title('Original image', 'FontSize', 30);
  drawnow;
  % Prepare output file name
  fullFileNameOutput = fullfile(outputFolder, baseFileName);
  % Converts to JPEG and gives it the .jpg extension
  fullFileNameOutput = strrep(lower(fullFileNameOutput), '.bmp', 'jpg')
  imwrite(rgbImage,fullFileNameOutput);
  % Reloads it in a JPEG format to see how bad the compression artifacts are.
  rgbImage = imread(fullFileNameOutput);
  subplot(1, 2, 2);
  imshow(rgbImage);
  title('Recalled JPG image', 'FontSize', 30);
  drawnow;
  pause(1);
end
% Open Windows Explorer to the output folder:
winopen(outputFolder);
Weitere Antworten (1)
  matt dash
      
 am 16 Feb. 2015
        Looks like you're missing a path separator between your folder name and file name. You should use the fullfile fucntion to combine paths with filenames instead of trying to do it with [].
6 Kommentare
  Eric
      
 am 17 Feb. 2015
				That's what I was getting at in my comment above. I didn't mean copy the BMP file and simply rename it to JPG, but to copy the first jpeg (the one that wrote correctly) to the location where the write failed.
You could check two things:
1. Does the output directory exist when you try to write to it?
2. Do you have write privileges to the directory?
-Eric
Siehe auch
Kategorien
				Mehr zu Convert Image Type finden Sie in Help Center und File Exchange
			
	Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



