【问题标题】:Convert to gray 1-bit, alpha 8-bit with ImageMagick使用 ImageMagick 转换为灰色 1 位、alpha 8 位
【发布时间】:2016-07-11 13:06:11
【问题描述】:

我正在尝试将 Android 应用程序资源(图标和背景)转换为与材质图标相同的格式(以节省空间并为它们着色):

$ identify -verbose ic_alarm_black_48dp.png 
Image: ic_alarm_black_48dp.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 192x192+0+0
  Units: Undefined
  Type: Bilevel
  Base type: Bilevel
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 1-bit
    alpha: 8-bit

此图像具有 8 位深度和 1 位灰度通道深度。

这是我想转换为上述格式的测试图像(透明背景上有阴影的形状):

$ identify -verbose a.png 
Image: a.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 256x256+0+0
  Units: Undefined
  Type: TrueColorAlpha
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
    alpha: 8-bit

我希望得到一个带有 8 位 alpha 通道的 1 位灰度图像。

我觉得我需要将源图像转换为 1 位灰度图像(所有不透明像素设置为 1)并在顶部应用提取的 alpha 蒙版。

转换为 1 位灰度

`convert a.png -alpha extract -threshold 0 -negate -transparent white a-trans.png`

在顶部应用遮罩

`convert a-trans.png \( a.png -alpha extract \) -alpha off -compose copy_opacity -composite a-result.png`

$ identify -verbose a-result.png 
Image: a-result.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 256x256+0+0
  Units: Undefined
  Type: Bilevel
  Base type: Bilevel
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 1-bit
    alpha: 8-bit

最后一张图片是我想要实现的。这种转换可以优化吗?

【问题讨论】:

  • 你真正想做的是什么?你想把紫色的盘子变成黑白的吗?还是要有 8 位 alpha?还是要有 1 位颜色?如果你把它变成灰色,你会失去颜色!答案是什么样的?
  • 答案是第一个(警报)和最后一个(黑色椭圆)图像。正如我所说,我希望得到一个具有 8 位 alpha 通道的 1 位灰度图像。我不需要颜色,因为之后图像会被着色。 Alpha 通道很重要。

标签: android imagemagick


【解决方案1】:

我认为你的意思是:

convert input.png -channel RGB -fill black -colorize 100%  result.png

Image: result.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 256x256+0+0
  Units: Undefined
  Type: Bilevel
  Base type: Grayscale
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 1-bit
    alpha: 8-bit

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2021-12-16
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多