【问题标题】:How do I avoid this ImageMagick anti-aliasing discoloration?如何避免这种 ImageMagick 抗锯齿变色?
【发布时间】:2023-03-18 02:47:01
【问题描述】:

更新:

多亏了 paddy 的建议,我注意到我的一台机器上的抗锯齿效果很好,但另一台机器上却不行。


我正在尝试创建一个具有透明背景的填充形状的 24x24 png。这是我正在使用的命令:

convert -size 24x24 xc:none \
        -fill red \
        -draw "path 'M 0,0 L 24,0 A 24,24 0 0,0 0,24 Z' " result.png

"xc: _____" 指定背景颜色。 (也许这是我弄错了?)

输出给了我正确的形状,但形状和透明区域之间的边界(即颜色和透明度之间的抗锯齿边缘)明显变暗:

右边显示的抗锯齿是我希望 ImageMagick 提供的。这是我得到的不同 xc 值的结果:

如您所见,抗锯齿可以很好地与纯色混合,但不能与透明度混合。 ImageMagick 指南有a section on anti-aliasing 和它可能导致的问题,但是通读它,没有一个例子涉及透明度。有什么想法吗?

【问题讨论】:

  • 你用的是什么版本? convert --version。我猜你的截图是你在 Mac OS X 上使用的。我在 Mac OS X 上也有 ImageMagick,安装了Brew。我的版本报ImageMagick 6.9.0-10 Q16 x86_64 2015-03-08,透明抗锯齿看起来不错。
  • 我正在 Crunchbang 11 Waldorf 上运行 convert version 6.9.1-2 Q16 i686 2015-04-22。但是,我也将它安装在我的 OSX 机器上(6.9.1-6 Q16 x86_64 2015-06-22),你说得对,它看起来不错。所以,我的 Crunchbang 盒子/安装肯定有问题。感谢您的帮助。

标签: imagemagick transparency transparent alpha antialiasing


【解决方案1】:

你试过设置-background Red -alpha Background吗?我怀疑背景颜色默认为黑色,然后在透明背景下被红色模糊。

【讨论】:

  • 就是它看起来的样子,不是吗。我试过这个:convert -size 24x24 xc: -background red -alpha background -fill blue -draw "path 'M 0,0 L 24,0 A 24,24 0 0,0 0,24 Z' " triangle_curved.png 但它删除了透明度并给它一个白色背景。
【解决方案2】:

尝试xc:transparent 而非xc:none

convert -size 24x24 xc:transparent \
    -fill red \
    -draw "path 'M 0,0 L 24,0 A 24,24 0 0,0 0,24 Z' " result.png

正如@paddy 在 cmets 中指出的那样,这个问题在更高版本的 IM 中得到了解决

【讨论】:

  • xc:transparent 没有为我修复这个版本的 IM。 耸耸肩
  • @DustinPaluch 啊!这不是我正在考虑的问题,而是系统之间的 SVG 代表。有一种方法可以强制矢量图形使用 MVG over RSVG 库。如果我可以挖掘文档,我会更新我的答案。
【解决方案3】:

更新到更新版本的 ImageMagick/convert (6.9.1-6 Q16 i686 2015-06-30) 为我解决了这个问题。 (谢谢,稻谷)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2011-07-05
    • 2014-03-19
    相关资源
    最近更新 更多