如何使用ImageMagick命令按图像的高度填充特定百分比?

时间:2015-01-16 05:14:08

标签: bash imagemagick

我有一张图片,其底部约有20%填充白色。但是图像有一些其他颜色的点而不是白色。我有100个这样的图像,我想从中删除这些点。

我一直在使用ImageMagick命令和bash脚本来自动执行多个任务,但我找不到任何命令从底部用纯色填充图像的某个百分比。 Sample image that I need to remove dots from 屏幕截图中的箭头标有点。示例命令或提示会很棒!

2 个答案:

答案 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将其复合到原始图像上。

<强>结果:

enter image description here