【问题标题】:Imagemagick - check if top line contains any black pixelImagemagick - 检查顶行是否包含任何黑色像素
【发布时间】:2021-05-24 06:10:38
【问题描述】:

我有一个白色的 jpg 文件,上面有一些黑色像素。

我正在寻找一种方法来检查顶行(因此 y = 0)是否包含任何黑色像素。有没有办法用 Imagemagick / convert 来做,或者其次是用任何其他 linux 命令行工具?

我在谷歌上找不到任何类似的主题。

谢谢。

【问题讨论】:

    标签: imagemagick imagemagick-convert


    【解决方案1】:

    您可以裁剪顶线并打印该行中最暗(最小)的像素,如下所示:

    magick image.png -crop x1+0+0\! -format "%[min]" info:
    

    如果有纯黑色像素,则打印0。


    我假设你的图像是灰度的,如果不是,你可能想要这样:

    magick image.png -crop x1+0+0\! -colorspace gray -format "%[min]" info:
    

    请注意,JPG 图像有损,因此即使您在图像中绘制黑色像素(即 0),保存后它也可能显示为 3 或 4。因此,您可能还希望添加一个阈值,以强制低于某个值的所有像素为零(即纯黑色),并将高于该值的所有像素强制为纯白色:

    magick image.jpg -crop x1+0+0\! -colorspace gray -threshold 1% -format "%[min]" info:
    

    【讨论】:

    • 好吧,我不确定这些图像是否被称为灰度。它们是使用这种类型的命令生成的: convert -size XxY xc:white -fill black -draw "text position_x,position_y SOMETEXT" $FN 。
    • 就 JPEG 而言,它们是一种灰度,但无论如何您都可以包含 -colorspace gray 而不会造成伤害。另外,convert 是旧的 v6 风格,现在你应该使用magick -size ...。请注意,如果您确实必须继续使用 v6,则需要将我的命令中的 magick 替换为 convert
    • 是的,我使用了 convert 而不是 magick,因为 magick 不存在 :- 。它似乎工作。谢谢。当然,我也可以使用相同的底线。
    • 是的,使用下面的裁剪底线convert image.jpg -gravity south -crop x1+0+0\! ...
    • 谢谢,这个重力南更实用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多