首页 > 解决方案 > 使用 ImageMagick 递归转换所有图像颜色的正确命令

问题描述

我在另一个线程上找到了一个命令,该命令非常适合将特定颜色转换为我在一个目录上测试过的透明颜色。但是,我有许多不同目录中的图像,我需要这样做。文件结构不能改变,理想情况下该命令将简单地用旧图像替换当前图像。当命令现在运行时,它会在 /batch 目录中创建一个新文件。

for file in *.png ; do convert "${file}" -transparent '#bbb7b9' "batch/${file}" ; done

所以对这个命令的两个修改是:

1)命令递归执行

2) 原图替换为新图(文件名相同)

我研究并发现使用该find命令可能是我需要的,但我对如何从for命令中翻译它感到困惑......看起来 -exec 的一些变体可能是我需要的,但我没有发现任何有效的东西。

想法/想法?

标签: linuxbashmacosimagemagick

解决方案


在 ImageMagick 中,您可以使用 mogrify 命令来处理整个图像文件夹(不会自动递归到子目录)。

cd to your image directory
mogrify -format png -transparent '#bbb7b9' *.png


但是,我建议创建一个新目录来保存您的输出图像或创建输入目录的备份副本,这样您就不会犯错误并用坏副本覆盖您的图像。

http://www.imagemagick.org/Usage/basics/#mogrify


推荐阅读