2017-07-17 68 views
1

我需要从svg转换为png文件夹中的所有图像。可以说图像被称为test1.svg,test2.svg,...,testn.svg。使用下面的脚本:将一串图像从svg转换为png

for i in *.svg 
do 
    convert "$i" PNG24:"$i".png 
done 

正确地做工作,并且图像被称为test1.svg.png,test2.svg.png,...,testn.svg.png。我的问题是:

1)是否可以将输出图像称为test1.png,test2.png,...,testn.png,从名称中删除'svg'部分?

2)是否可以将它们直接发送到其他目录?

谢谢!

回答

3

是的。你可以让另一目录,并有给他们这样的:

mkdir other 
for i in *.jpg; do 
    convert "$i" PNG24:other/"${i%jpg}png" 
done 

如果你有大量的图片做的,而你是在MacOS或Linux,我会建议GNU并行落榜做得更快:

mkdir other 
parallel convert {} PNG24:other/{.}.png ::: *jpg 
+0

整洁。平行部分对我来说似乎很棒。 非常感谢! – TheRevanchist

+0

如果你有很多事情要做,并且想要利用你付出的所有那些可爱的英特尔内核,而这些内核通常都是闲置的,那么这是一个非常棒的工具。尝试添加'--progress'或'--bar'来查看进度。你也可以使用'--dry-run'来看看它会做什么。在这里花10分钟是非常值得的https://www.gnu.org/software/parallel/parallel_tutorial.html祝你的项目好运。 –

+0

Mark Setchell:感谢关于$ {string%substring}的提示\t从$ string后面剥离$ substring的最短匹配。在ImageMagick中,我一直习惯做:name = $(convert -ping $ file -format“%t”info :)以删除后缀。现在我可以做name = $ {file%。*} – fmw42