linux - 如何删除文件夹内每个文件上特定颜色的所有像素?

标签 linux shell unix imagemagick

有没有一种简单的方法可以转换文件夹中的所有图像,从而删除具有特定颜色的每个像素?

最佳答案

您应该定义“移除”的含义。如果您的意思是用其他(背景)颜色替换,您可以像这样转换单个文件:

convert -fill REPLACEMENT_COLOR -opaque ORIGINAL_COLOR \
        ORIGINAL_IMAGE MODIFIED_IMAGE

如果“移除”是指使像素透明,那么您可以像这样转换单个文件:

convert -transparent ORIGINAL_COLOR ORIGINAL_IMAGE MODIFIED_IMAGE

其中 ORIGINAL_IMAGE 和 MODIFIED_IMAGE 分别是您的输入和输出图像文件,ORIGINAL_COLOR 和 REPLACEMENT_COLOR 是 ImageMagick color format 中的原始颜色和替换颜色.

现在,例如,这会将当前目录中所有图像中的所有红色像素替换为白色像素,并使用前缀为“modified_”的名称保存它们:

for f in *; do
    convert -fill white -opaque red "$f" "modified_$f"
done

关于linux - 如何删除文件夹内每个文件上特定颜色的所有像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477556/

相关文章:

unix - 如何在 unix/shell 中以编程方式清除旧目录?

linux - killall 命令会杀死哪些程序?

linux - 子接口(interface)的 puppet 网络模块

php - 如何终止与 grep 匹配时间超过 30 分钟的进程?

linux - Centos从文件添加多个接口(interface)到VLAN

ruby - 为新的 unix 工具添加安静/冗长的标志有多重要?

linux - 编写接受多个多空格参数的 bash 脚本

python - 错误: 'ValueError: _names_ are reserved for future Enum use'

Excel VBA Shell.Namespace 返回 Nothing

linux - Bash 函数在后台自动运行命令并拒绝