将一堆图像从 svg 转换为 png

The*_*ist 2 svg png imagemagick imagemagick-convert

我需要将文件夹中的所有图像从 svg 转换为 png。假设图像被称为 test1.svg、test2.svg、...、testn.svg。使用以下脚本:

for i in *.svg
do
    convert "$i" PNG24:"$i".png
done
Run Code Online (Sandbox Code Playgroud)

正确完成工作,图像被称为 test1.svg.png, test2.svg.png, ... , testn.svg.png。我的问题是:

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

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

谢谢!

Mar*_*ell 5

是的。您可以创建另一个目录并将它们发送到那里,如下所示:

mkdir other
for i in *.jpg; do
   convert "$i" PNG24:other/"${i%jpg}png"
done
Run Code Online (Sandbox Code Playgroud)

如果你有很多图像要做,而且你使用的是 macOS 或 Linux,我会推荐GNU Parallel来更快地完成工作:

mkdir other
parallel convert {} PNG24:other/{.}.png ::: *jpg
Run Code Online (Sandbox Code Playgroud)

  • 啊哈,如果我使用“parallel -j8 magick -limit thread 1 ....”,它会停止使用多个线程的 OpenMP,并在 5 秒内完成所有 29 个图像。 (2认同)