将灰度图像转换为渐进黑色加透明度?

时间:2014-04-10 12:29:26

标签: shell raster gdal imagemagick-convert

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

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

输入: enter image description here

输出(此处通过Gimp制作): enter image description here


通过GUI进行当前的Gimp流程:

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

1 个答案:

答案 0 :(得分:2)

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

给出以下灰度input.png

enter image description here

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

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

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

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

<强>手册

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

1b的结果:

enter image description here

消灭平原: 额外的处理可以消除大部分平坦的平原,这些平原出现在灰色(#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%叠加。

enter image description here

另见:

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