【问题标题】:A way to perform the +level ImageMagick operation in Wand?一种在 Wand 中执行 +level ImageMagick 操作的方法?
【发布时间】:2019-03-12 07:36:54
【问题描述】:

在命令行中使用 +level ImageMagick 运算符 (https://imagemagick.org/script/command-line-options.php#level) 将生成输出图像,其中输入图像的通道值被压缩到指定范围。

例如,以下 ImageMagick 命令将导致输出像素强度值出现在总像素值范围的 45% 到 70% 之间。

magick input.jpg +level 45%,70% output.jpg

如何在 Wand 中执行 +level ImageMagick 操作?

wand.image.BaseImage.level() (http://docs.wand-py.org/en/0.5.1/wand/image.html#wand.image.BaseImage.level) 似乎执行了-level ImageMagick 操作。

https://imagemagick.org/script/command-line-options.php#level 中所述,-level 和 +level ImageMagick 运算符之间存在密切关系。

我不知道如何在 Wand 中进行 +level ImageMagick 操作。

有人能解释一下吗?

【问题讨论】:

    标签: python imagemagick wand


    【解决方案1】:

    抱歉,我不太了解 Wand 语法。也许有人可以添加到这个答案或发布另一个提供正确语法的答案。

    但是您可以使用带有参数 polynomial 的 wand function 命令实现与 +level 的等效,其中多项式参数等效于方程 a*x+b。见http://docs.wand-py.org/en/0.5.1/wand/image.html

    您必须根据您的值和以下等式计算 a 和 b 才能达到 +level 的等效值。

    a*X+b = Y

    当 X=0 时,Y=0.45。

    当 X=1 时,y=0.70。

    所以我们有两个线性方程需要求解。

    0*a+b=0.45

    1*a+b=0.70

    从上面的等式,你有

    b=0.45

    将b代入下面的方程得到

    a+0.45=0.70 --> a=0.25

    在 ImageMagick 中,您将使用

    convert image.suffix -function polynomial "0.45, 0.25" result.suffix
    


    https://imagemagick.org/Usage/transform/#function_polynomial

    在 Wand 函数中,您需要选择多项式,然后提供上面的 a 和 b 值。

    对 Wand function 语法的猜测类似于:

    from wand.image import Image
    with Image(filename='yourimage.suffix') as img:
       a = 0.25
       b = 0.45
       img.function('polynomial', [a, b])
    ...
    

    【讨论】:

    • fmw42 的上述解决方案完美运行。我不知道在 Wand 中执行 +level ImageMagick 操作的任何其他方式。除非 Wand 中内置了 +level 运算符,否则上述方法似乎是在 Wand 中执行 +level 操作的最佳(也许是唯一)方法。
    • 如果我的解决方案成为最好的解决方案并解决了您的问题,请考虑给它投票。
    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多