【问题标题】:Convert grayscale image to progressive black plus transparency?将灰度图像转换为渐进式黑色加透明度?
【发布时间】:2014-04-10 12:29:25
【问题描述】:

我有一个灰度图像,我希望将所有灰色像素转换为半透明像素,将白色像素转换为透明像素。

如何通过 shell 处理灰度光栅图像?

输入:

输出(这里通过 Gimp 制作):


通过 GUI 的当前 Gimp 进程:

  1. GIMP 2.6 > 加载阴影浮雕图像(....shaded.tif : 是灰度的) 或阴影浮雕的屏幕截图(屏幕截图:RGB 颜色)
  2. 强制为 RGB:Gimp > Image > Mode > RGB,点击。
  3. 删除灰色:颜色>“颜色到alpha”弹出>取消选中“预览”,点击水平颜色矩形>“颜色到alpha颜色选择器”弹出>右下角,点击图标眼睛滴管>选择要删除的颜色(平面中的一些灰色像素)> 验证。
  4. 删除其他颜色(白色、黑色背景)> 相同。
  5. 文件 > 另存为 > ProjectName_relief_whitened.png(保持透明度)

【问题讨论】:

标签: shell raster gdal imagemagick-convert


【解决方案1】:

[注意:SO 图像显示,图像背景 CSS 使得很难看到文件之间的细微差别。]

给定以下灰度input.png

1a。要使该图像的黑色像素透明并线性保持白色像素不变,请运行以下命令:

convert source.png -alpha copy -fx '#fff' result.png

1b。要使白色像素透明并线性保持黑色不变,请使用:

convert source.png -alpha copy -channel alpha -negate +channel result.png

手动:

  • convert – 是 ImageMagic 命令(几个之一)
  • source.png – 是灰度源图像。
  • -alpha copy – 将前一个文件的内容复制到 alpha 通道中。
  • -channel alpha - 它指定以下运算符仅应影响 alpha 通道。
  • -negate – 反转当前通道(通道 alpha)。
  • +channel – 指定后面的操作符只影响相反的通道。对我们来说,它将焦点从 alpha 通道切换到颜色通道。 (颜色通道最初是默认的)
  • -fx '#000' - 用黑色像素替换当前通道(对我们来说是颜色通道)内容,因此最终结果实际上完全取决于 Alpha 通道。如果不包括在内,生成图像中的所有半透明像素都将保留颜色,从 #FFF(白色)到 #000(黑色)。

1b 的结果:

消灭平原: 额外的处理可以消除大部分平坦的平原,这些平原出现在灰色 (#DDDDDD) 周围,不透明度:~50%。这可以通过:

convert input.png -fuzz 8% -transparent "#DDDDDD" grey_no.8pc.png
convert grey_no.8pc.png -alpha copy -channel alpha -negate +channel result.grey_no.png

所以平原避免了无用的#DDDDDD, opacity:50%覆盖。

另请参阅:

  1. ImageMagick 选项:http://www.imagemagick.org/script/command-line-options.php

【讨论】:

  • 很好的答案。我认为您可以使用 -evaluate set 100% 而不是 -fx '#fff',它的运行速度大约快 4 倍。
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 2018-02-17
  • 1970-01-01
  • 2011-01-25
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
相关资源
最近更新 更多