如何使用 MATLAB 重命名具有不同文件扩展名的文件?



我有一个包含 106 张图像的文件夹。其中,15个具有".jpg"扩展名,其他91个具有".tif"扩展名。 我想按顺序重命名文件,以便它们都具有".tif"扩展名。 我能够使用以下代码重命名具有相同扩展名 (.jpg( 的文件:

a = 'Dnewfolder';
A = dir(fullfile(a,'*.jpg'));
fileNames = {A.name};
for iFile = 1:numel(A)
newName = fullfile(a,sprintf('%0d.jpg',iFile));
movefile(fullfile(a,fileNames{iFile}),newName);
end

此代码适用于扩展名为".jpg"的图像。 但是,现在我在同一文件夹中同时具有".tif"和".jpg"文件扩展名。 我想重命名它们并在循环中对它们应用进一步的操作。 如何修改此代码以按顺序重命名".tif"和".jpg"文件,并使用".tif"作为重命名文件"扩展名?

这是一个接近您当前解决方案的解决方案:

A = dir(fullfile(a,'*.jpg'));
B = dir(fullfile(a,'*.tif'));
fileNames = {A.name,B.name};
for iFile = 1:numel(fileNames)
newName = fullfile(a,sprintf('%0d.tif',iFile));
movefile(fullfile(a,fileNames{iFile}),newName);    
end

其中a是您已经定义的文件夹。

更新

文件扩展名".jpg"和".tif"只是指示该文件中预期图像格式的标签。 虽然只有标签,可能是错误的。 例如,如果您为这些文件提供".txt"扩展名,它们不会突然变成文本文件,尽管您更有可能在文本编辑器中打开它们并进行验证。

话虽如此,许多图像加载器将首先直接从文件(而不是扩展名(验证图像格式,并使用相应的编解码器来加载它。 因此,格式和文件扩展名的不匹配在实践中可能并不重要,但您有点依赖机会。

但是,您可以直接将 jpeg 格式的图像转码为 tiff 格式。 在Mathworks网站上也提出了类似的问题。

基本上,您将读取文件,然后以新格式写入它。 以下是更改上述代码的方法:

A = dir(fullfile(a,'*.jpg'));
B = dir(fullfile(a,'*.tif'));
fileNames = {A.name,B.name};
for iFile = 1:numel(fileNames)
[~,~, fileExt] = fileparts(fileNames{iFile});
if(strcmpi(fileExt,'.jpg'))
fullJpegFilename = fullfile(a,fileNames{iFile});
tmpImg = imread(fullJpegFilename); % read jpeg format
imwrite(tmpImg,fullfile(a,sprintf('%0d.tif',iFile)); % write file as .tif format
delete(fullJpegFilename);  % no longer needed            
else
newName = fullfile(a,sprintf('%0d.tif',iFile));
movefile(fullfile(a,fileNames{iFile}),newName);    
end
end    

最新更新