Select multiple files in browser for conversion.

2 次查看(过去 30 天)
Hello, I have written a simple code for converting RGB bitmap's to 8 bit .bmp's and .pgm to 8 bit .bmp. The code is as follows,
clear all
close all
% Prompt for image
[image_file image_file_path image_file_filterindex] = uigetfile({'*.pgm;*.bmp'}, 'Select image for conversion to *.bmp')
% This breaks up the input file name (image_file) into the directory (pathstr)
% the file name without the extention (name) and extention (ext)
[pathstr, name, ext] = fileparts(image_file);
% Find file extensions (must be either bmp or pgm)
image_file_type=image_file(max(strfind(image_file, '.'))+1:end);
% Only performs conversion if correct file types given
if(image_file_type=='bmp')
image_data=imread([image_file_path image_file], image_file_type);
image_data_n = rgb2gray(image_data);
imwrite(image_data_n, [image_file_path name '.bmp'], 'bmp');
elseif (image_file_type=='pgm')
image_data=imread([image_file_path image_file], image_file_type);
imwrite(image_data, [image_file_path name '.bmp'], 'bmp');
end
It works as intended however I would like to be able to select multiple files in the initial browser window to be converted. I thought of writing a loop to call different files of a similar name however then I would have to change the name of the files, as the names are not necessarily similar.
So, how do i change the above code so that I can select multiple files for conversion?
Thank you for your time, BN

采纳的回答

Tom
Tom 2012-6-26
uigetfile({'*.pgm;*.bmp'}, 'Select image for conversion to *.bmp','MultiSelect','On')
which will give you a cell array of file names and paths
you can then run these in a loop, so
for n=1:length(image_file)
[pathstr, name, ext] = fileparts(image_file{n});
...
end
FYI there are a couple of bits in your code you can simplify, for example you've written:
image_file_type=image_file(max(strfind(image_file, '.'))+1:end);
when you essentially already have that as in the 'ext' variable.
  3 个评论
Tom
Tom 2012-6-26
is the problem that if you only select one then it's not in a cell?
if ~iscell(image_file)
image_file={image_file};
image_path={image_path};
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by