2014-07-04 16 views

回答

3

我不知道是否有指定从mogrify输出文件格式的方式,但我会用convert用简单的bash循环,而不是:

for f in *.jpg; 
do 
    convert "$f" -resize 150x150 +profile "*" "${f%.jpg}-thumbnail.jpg"; 
done; 

或者,如果你真想用mogrify你可以使用-output-directorymore on this option here)把新文件放到单独的目录,然后照顾重命名的:

mkdir tmp; 
gm mogrify -output-directory tmp -size 150x150 -resize 150x150 +profile "" "*.jpg"; 
for f in tmp/*.jpg; 
do 
    mv "$f" "${f%.jpg}-thumbnail.jpg"; 
done; 
mv tmp/* .; 
rm -rf tmp; 

我喜欢第一种方法更好;)

+0

这个答案是正确的(+1)。对于一次性运行,我使用一个脚本为每个运行“gm convert”,但如果我做了很多图像,我通常会使用类似于第二种方法的内容,以避免重复加载“gm”。在我看来,“-name filename”或类似文件将是添加到mogrify的有用选项。 ImageMagick和GraphicsMagick都有一个“-name”选项,但它的文档非常稀疏,并且不被“mogrify”识别。 –

2

如果输出格式(扩展名)与输入格式不同,则文件不会被覆盖。如果它们是相同的,你可以使用这一招,使他们似乎是为了这个目的“不同”,但实际上是一样的,但在扩展的情况有所不同:

gm mogrify -resize 150x150 -format PNG +profile "*" *.png 

编辑:

我不知道“mogrify”中的设施是否重命名输出文件,而不是指定不同的目录或不同的扩展名。所以fragphace的答案是正确的。您将需要使用脚本来重命名它们。在我的答案组合:

gm mogrify -resize 150x150 -format PNG +profile "*" *.png 
for file in *.PNG 
do 
    basename=`echo $file | sed -e "s/.PNG//"` 
    mv $basename.PNG $basename-thumbnail.png 
done 
+0

我想保持文件扩展名相同,但附加文件名..所以原始文件将看起来像photo.png和新文件将看起来像photo-thumbnail.png 。我想将“缩略图”添加到目录中的每个文件。有没有办法做到这一点? –

+0

不是直接。 Fragphace是正确的;你必须使用脚本。我相应地修改了我的答案。 –

+0

谢谢!我希望我能给你两个正确的答案。 –

相关问题