如何使用color_type = 3和bit_depth = 1创建PNG图像

时间:2015-01-10 17:57:13

标签: imagemagick png imagemagick-convert

源是RGBA PNG图像(color_type = 6,bit_depth = 8)。

我需要带有索引颜色和2个调色板项目的图像(color_type = 3,bit_depth = 1)。

我尝试使用ImageMagick,但只能使用1位灰度图像(color_type = 0,bit_depth = 1)或2位索引彩色图像(color_type = 3,bit_depth = 2),其中只使用了2种颜色。 / p>

根据PNG规范,这样的图像是可能的,但如何创建呢?

这是我想要转换的图片:

enter image description here

"convert input.png -type palette -depth 1 output.png"的结果:

enter image description here

"convert input.png -type palette -depth 1 -colors 2 output.png"

的结果

enter image description here

两个结果都有bit_depth = 2,但第二个结果只使用2种颜色,可能有4种颜色。

3 个答案:

答案 0 :(得分:2)

  

convert input.png -background white -t​​ype palette -depth 1 -colors 2 output.png

适合我。

(为什么-depth=1还不够?不知道。)

BTW,tweakpng工具可用于检查此类事物。

更新:如果图像具有透明度,则可以通过明确删除它来使游戏更安全:

  

convert input.png -background white -flatten -type palette -depth 1 -colors 2 output.png

(您可以根据自己的喜好替换white

答案 1 :(得分:2)

使用以下3之一,从输出文件中的从最少到大多数辅助标记排序:

convert -colors 2 -define png:include-chunk=none -verbose input.png output.png

convert -colors 2 -define png:exclude-chunk=bkgd -verbose input.png output.png

convert -colors 2 -background #000000 -verbose input.png output.png

这个问题的根源是默认情况下ImageMagick使用白色background color (bKGD) PNG chunk标记图像(不必要地说),然后将此颜色添加到调色板中(如果它尚未存在),即使图像没有那种颜色的像素。转换为双色后,您的特定图像没有白色,因此不需要的背景颜色标记变为第3种颜色,不能再保存为1位索引彩色图像。另请参阅this from the author of IM

其他人未能重现问题的原因可能是他们已经使用图像进行了测试,其中2种颜色中的一种恰好是白色。

-define png:include-chunk=none的第一个选项通过根本不输出任何辅助PNG块(例如bKGD,gAMA,cHRM,tEXt,tIME)来避免此问题。像pngcrush -rem alla一样。我更喜欢这样一个不那么混乱的文件(没有它IM即使它们不在输入文件中也会添加一些)。 注意:还有一个简单的-strip选项should avoid most of these,但是从v6.9.3起,它不会因为错误而削减bKGD。

第二个-define png:exclude-chunk=bkgd只删除有问题的背景块。

-background #000000的第3个选项保留所有辅助PNG块,包括bKGD,但将其设置为黑色,是图像中存在的2种颜色之一,因此它仍然可以是1位。调整图像的颜色,其中既没有白色也没有黑色。

请注意,对于所有这些,我包括-verbose开关。不过分冗长;只是从零行到两行状态输出,如果图像保持2色则你会注意到“2c”,否则就会注意到“3c”。它还会告诉您调色板减少是否有损。它还为大多数图像输出“8位sRGB”,甚至是每像素少于8位的调色板;这不是你对另一个答案@johnfound的评论中的错误,这不是指每个像素的比特,而是指每个颜色的比特组件。对于(稀有)深色图像,它可以超过8位。

答案 2 :(得分:0)

我认为您需要的命令是:

convert input.png -type palette -depth 1 output.png

如果没有,请发布您的输入图片,并说明您在何处/何处找到您所引用的color_typebit_depth字段。

Exiftool告诉我:

ExifTool Version Number         : 9.76
File Name                       : output.png
Directory                       : .
File Size                       : 2.3 kB
File Modification Date/Time     : 2015:01:10 19:20:33+00:00
File Access Date/Time           : 2015:01:10 19:21:46+00:00
File Inode Change Date/Time     : 2015:01:10 19:20:33+00:00
File Permissions                : rw-r--r--
File Type                       : PNG
MIME Type                       : image/png
Image Width                     : 640
Image Height                    : 427
Bit Depth                       : 1
Color Type                      : Grayscale
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Gamma                           : 2.2
Background Color                : 1
Datecreate                      : 2015-01-10T10:21:30+00:00
Datemodify                      : 2015-01-10T10:21:30+00:00
Image Size                      : 640x427

ImageMagick identify告诉我:

Image: output.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 640x427+0+0
  Units: Undefined
  Type: Bilevel
  Base type: Bilevel
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8/1-bit
  Channel depth:
    gray: 1-bit
  Channel statistics:
    Pixels: 273280
    Gray:
      min: 0 (0)
      max: 255 (1)
      mean: 1.90168 (0.00745755)
      standard deviation: 21.9388 (0.0860345)
      kurtosis: 129.1
      skewness: 11.4499
  Colors: 2
  Histogram:
    271242: (  0,  0,  0) #000000 gray(0)
      2038: (255,255,255) #FFFFFF gray(255)
  Colormap entries: 2
  Colormap:
         0: (  0,  0,  0) #000000 gray(0)
         1: (255,255,255) #FFFFFF gray(255)
  Rendering intent: Undefined
  Gamma: 0.45455
  Background color: gray(255)
  Border color: gray(223)
  Matte color: gray(189)
  Transparent color: gray(0)
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 640x427+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2015-01-10T19:20:33+00:00
    date:modify: 2015-01-10T19:20:33+00:00
    png:bKGD: chunk was found (see Background color, above)
    png:gAMA: gamma=0.45455 (See Gamma, above)
    png:IHDR.bit-depth-orig: 1
    png:IHDR.bit_depth: 1
    png:IHDR.color-type-orig: 0
    png:IHDR.color_type: 0 (Grayscale)
    png:IHDR.interlace_method: 0 (Not interlaced)
    png:IHDR.width,height: 640, 427
    png:text: 2 tEXt/zTXt/iTXt chunks were found
    signature: 3e08d7fea7bc7aeb0659ac2e2696084083d35ce30b0e3075dc561ad94259eaec
  Artifacts:
    filename: output.png
    verbose: true
  Tainted: True
  Filesize: 2.33KB
  Number pixels: 273K
  Pixels per second: 27.33MB
  User time: 0.000u
  Elapsed time: 0:01.009
  Version: ImageMagick 6.8.9-8 Q16 x86_64 2014-11-10 http://www.imagemagick.org