【问题标题】:Convert a bunch of images from svg to png将一堆图像从 svg 转换为 png
【发布时间】:2017-12-21 17:25:23
【问题描述】:

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

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) 是否可以将它们直接发送到其他目录?

谢谢!

【问题讨论】:

    标签: svg imagemagick png imagemagick-convert


    【解决方案1】:

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

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

    如果您有很多图像要做,并且您使用的是 macOS 或 Linux,我建议您使用 GNU Parallel 以更快地完成工作:

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

    【讨论】:

    • 整洁。平行部分对我来说似乎很棒。非常感谢!
    • 如果您有很多事情要做,并且想要利用您支付的所有可爱的英特尔内核并且通常闲置在那里,这是一个很棒的工具。尝试添加--progress--bar 以查看进度。您还可以使用--dry-run 来查看实际执行任何操作的情况。在这里花 10 分钟是值得的gnu.org/software/parallel/parallel_tutorial.html 祝你的项目好运。
    • Mark Setchell:感谢有关 ${string%substring} 的提示,从 $string 后面去除 $substring 的最短匹配项。在ImageMagick中,我一直有这样的习惯:name=$(convert -ping $file -format "%t" info:) 去掉后缀。现在我可以做 name=${file%.*}
    • @fmw42 酷 - 实际上有很多,你可以从头或尾剥离,在中间替换,获取子字符串等。我通过谷歌搜索得到它们 "tldp 参数替换" 把你带到这里...tldp.org/LDP/abs/html/parameter-substitution.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2017-12-08
    • 2022-07-05
    • 2011-06-16
    • 2017-05-11
    相关资源
    最近更新 更多