我有一张图片,其底部约有20%填充白色。但是图像有一些其他颜色的点而不是白色。我有100个这样的图像,我想从中删除这些点。
我一直在使用ImageMagick命令和bash脚本来自动执行多个任务,但我找不到任何命令从底部用纯色填充图像的某个百分比。 屏幕截图中的箭头标有点。示例命令或提示会很棒!
答案 0 :(得分:2)
我通过计算高度,获取图像高度的百分比(近似值)并填充白色矩形来实现目标。
# A tool to fill up 10% of the bottom of given image
# by white color. Useful to remove unnecessary colors
# at the bottom of image.
# Usage: this_script.sh required_image.jpg
#!/bin/bash
image=$1
right=`identify -format %w $image`;
bottom=`identify -format %h $image`;
top=`expr $bottom \* 9 / 10 | bc`;
left=0
convert $image -fill white -draw "rectangle ${left},${top},${right},${bottom}" $image
对于以下文件夹中的多个图像,可以自动执行此操作:
for img in *.jpg; do bash <script>.sh $img; done
答案 1 :(得分:1)
您可以通过以下步骤执行此操作:
convert in.png \
\( +clone -gravity south -crop x10% -evaluate set 100% \) \
-composite out.png
基本上,我们在图像中读取,然后做一些“一边处理” - 一个由ImageMagick大师Kurt Pfeifle创造的令人愉快的术语。 “旁边处理”以(\
开头,以\)
结尾。在那里,我们克隆图像(即创建它的副本)并切掉底部的10%,然后我们用白色填充。在“旁边处理”结束时,此白色图像仍然在我们的图像堆栈中,因此我们告诉ImageMagick将其复合到原始图像上。
<强>结果:强>