2016-04-28 5 views
1

特定のフォルダ(およびサブフォルダ)内のすべての画像をjpeg形式に変更して保存する必要があります1つのフォルダ。 私はMatlabを初めて使っています。私が試した何を:私はconvertImages(「画像」、「PNG」)を実行しようとすると特定のフォルダ内のすべての画像をmatlabにjpegと入力する

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 

、IMGSは空です - しかし、私はフォルダ内の6つのファイルを持ち、それらの二つはPNGです。

convertImages( 'images'、 '*')を実行しようとすると、Imgsは8つのファイルを読み込みます。そのうちの2つは '。'です。と '..'、私は見ることができない2つのファイルとそれは、MATLABクラッシュする。

ご協力いただければ幸いです!

+1

'convertImages( 'images'、 '*。png')'はうんざりですか? – ThP

+0

それは..ありがとう!愚かな間違い。あなたは答えを投稿したいですか? – user2993422

+0

oh。そして、私はさまざまなファイル形式を持っています。どのように複数の形式を指定できますか?私はpngだけでなく、GIF、TIFFなどを意味します。 – user2993422

答えて

2

まず、 '。' '..'はカレントディレクトリと親ディレクトリを表します。
ここでは、可能なすべての型を持つセル配列ImgTypeを作成することによって、複数の型をサポートすることができます。たとえば:

ImgType = {'.png','gif'}; 

と最後にあなたがすることができるファイルの種類を確認するために、わずか3の代わりに、1からループを開始Imgsの最初の2つのエントリを避けるために

Imgs = dir(fullfile(Folder,'*')); 

を使用します:

[~,name,ext] = fileparts(Imgs(i).name); 
if any(cellfun(@(x) strcmp(x,ext), ImgType)) 
... 
end 
関連する問題