我有一个包含106张图片的文件夹。其中,15个具有“.jpg”扩展名,另外91个具有“.tif”扩展名。我想按顺序重命名文件,以便它们都具有'.tif'扩展名。我可以使用以下代码重命名具有相同扩展名(.jpg)的文件:
a = 'D\newfolder';
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'作为重命名文件的扩展名?
答案 0 :(得分:1)
这是一个与当前解决方案保持一致的解决方案:
import java.lang.*;
import java.math.*;
import java.util.regex.*;
class Pattern {
public static void main(String args[]) {
int count = 0;
String regex = "(//d+?)//1)";
Pattern p = Pattern.compile(regex); //cannot find symbol compile
BigDecimal b = new BigDecimal("1");
for (int i = 1; i <= 10; i++) {
BigDecimal b1 = new BigDecimal(i);
String elem = b.divide(b1, 15, RoundingMode.HALF_UP).toString();
Matcher match = p.matcher(elem); //cannot find symbol matcher
while (match.find()) {
int x = match.start() - match.end();
if (x > count)
count = x;
}
}
System.out.println("the highest count is" + count);
}
}
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
是您已定义的文件夹。
<强>更新强>
文件扩展名&#39; .jpg&#39;和&#39; .tif&#39;只是指示该文件中预期的图像格式的标签。虽然只是标签,但可能是错误的。例如,如果你给这些文件一个&#39; .txt&#39;扩展它们不会突然变成文本文件,尽管您更有可能在文本编辑器中打开它们并进行验证。
话虽这么说,许多图像加载器将首先直接从文件(而不是扩展名)验证图像格式,并使用相应的编解码器来加载它。因此,格式和文件扩展名的不匹配在实践中可能并不重要,但是你有点依赖机会。
然而,您可以直接将jpeg格式的图像转码为tiff格式。在The Mathworks site提出了类似的问题。
基本上,您会读取该文件,然后以新格式写入。以下是如何更改上述代码的方法:
a