我需要将特定文件夹(和子文件夹)中的所有图像更改(而不是保留旧版)为jpeg类型的格式,并将所有图像保存在一个文件夹中。 我是Matlab的新手。我尝试了什么:
function convertImages(Folder,ImgType)
Imgs = dir(fullfile(Folder,ImgType));
for i=1:numel(Imgs)
oldFilename = fullfile(Folder, Imgs(i).name);
[~,name,~] = fileparts(Imgs(i).name);
newFilename = fullfile(Folder, strcat(name, '.jpg'));
imwrite(imread(oldFilename), newFilename);
end
end
当我尝试运行convertImages('images','png')时,Imgs为空 - 但我在文件夹中有6个文件,其中两个是png。
当我尝试运行convertImages('images','*')时,Imgs会加载8个文件,其中两个是'。'和'..',我看不到两个文件,它崩溃了matlab。
任何帮助将不胜感激!
答案 0 :(得分:2)
首先,'。'和' ..'代表当前和父目录。
现在,为了支持多种类型,我要做的是使ImgType
成为具有所有可能类型的单元数组。例如:
ImgType = {'.png','gif'};
并使用
Imgs = dir(fullfile(Folder,'*'));
为了避免Imgs
的前两个条目,只需从3而不是1开始循环。最后,为了检查文件类型,你可以这样做:
[~,name,ext] = fileparts(Imgs(i).name);
if any(cellfun(@(x) strcmp(x,ext), ImgType))
...
end