更改特定文件夹中的所有图像以在matlab中键入jpeg

时间:2016-04-28 17:10:41

标签: image matlab format

我需要将特定文件夹(和子文件夹)中的所有图像更改(而不是保留旧版)为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。

任何帮助将不胜感激!

1 个答案:

答案 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