MATLAB: Conversion of .BMP to .jpg images

bmpdigital image processingimage conversionimage processingImage Processing Toolboxjpeg

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

Best Answer

  • 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);