我想转换一组文件,但不覆盖现有的文件。我如何使用mogrify来指定最终的文件格式?例如,firstpic.png - > firstpic-thumbnail.png,secondpic.png - > secondpic-thumbnail.png等在graphicsmagick中,我怎样才能在大量文件上指定输出文件?
克mogrify -size 150×150 * .PNG调整大小150×150 +轮廓 “*” “% f-thumbnail.png“
有没有办法做到这一点?
我想转换一组文件,但不覆盖现有的文件。我如何使用mogrify来指定最终的文件格式?例如,firstpic.png - > firstpic-thumbnail.png,secondpic.png - > secondpic-thumbnail.png等在graphicsmagick中,我怎样才能在大量文件上指定输出文件?
克mogrify -size 150×150 * .PNG调整大小150×150 +轮廓 “*” “% f-thumbnail.png“
有没有办法做到这一点?
我不知道是否有指定从mogrify输出文件格式的方式,但我会用convert
用简单的bash循环,而不是:
for f in *.jpg;
do
convert "$f" -resize 150x150 +profile "*" "${f%.jpg}-thumbnail.jpg";
done;
或者,如果你真想用mogrify
你可以使用-output-directory
(more 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;
我喜欢第一种方法更好;)
如果输出格式(扩展名)与输入格式不同,则文件不会被覆盖。如果它们是相同的,你可以使用这一招,使他们似乎是为了这个目的“不同”,但实际上是一样的,但在扩展的情况有所不同:
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
我想保持文件扩展名相同,但附加文件名..所以原始文件将看起来像photo.png和新文件将看起来像photo-thumbnail.png 。我想将“缩略图”添加到目录中的每个文件。有没有办法做到这一点? –
不是直接。 Fragphace是正确的;你必须使用脚本。我相应地修改了我的答案。 –
谢谢!我希望我能给你两个正确的答案。 –
这个答案是正确的(+1)。对于一次性运行,我使用一个脚本为每个运行“gm convert”,但如果我做了很多图像,我通常会使用类似于第二种方法的内容,以避免重复加载“gm”。在我看来,“-name filename”或类似文件将是添加到mogrify的有用选项。 ImageMagick和GraphicsMagick都有一个“-name”选项,但它的文档非常稀疏,并且不被“mogrify”识别。 –