imagemagick - 防止 ImageMagick 转换为灰度

标签 imagemagick imagemagick-convert

我在 Windows 上使用 ImageMagick-6.9.1 来调整 PNG 文件的大小,然后再用其他工具处理它。源文件为 RGBA,但图像数据为灰度(所有像素的 R、G 和 B 值相同)。看来 ImageMagick 正在检测这一点,并将输出转换为灰度,即使我像这样指定格式和色彩空间:

convert.exe src.png -format PNG32 -colorspace sRGB -background transparent -resize 830x540 out.png

我已经在几个不同的应用程序(包括 Photoshop)中验证了生成的输出格式是 8 位灰度。这是一个问题,因为后面的处理步骤无法处理灰度格式,并崩溃。向源添加色调可以使该过程成功完成,但我们需要能够处理未着色的原件。

即使检测到源是灰度图像,如何强制 ImageMagick 输出 RGB 格式的图像?

更长的日志:(注意 IHDR 中从 color_type 6 到 color_type 4 的转换)
>.\ImageMagick-6.9.1-2\identify.exe -verbose rgba_src.png 
Image: rgba_src.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 884x747+0+0
  Resolution: 28.35x28.35
  Print size: 31.1817x26.3492
  Units: PixelsPerCentimeter
  Type: GrayscaleAlpha
  Base type: GrayscaleAlpha
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 8-bit
    alpha: 8-bit
  Channel statistics:
    Pixels: 660348
    Gray:
      min: 0 (0)
      max: 255 (1)
      mean: 234.605 (0.920019)
      standard deviation: 56.1418 (0.220164)
      kurtosis: 11.312
      skewness: -3.45486
      entropy: 0.271262
    Alpha:
      min: 0 (0)
      max: 247 (0.968627)
      mean: 23.5875 (0.0924999)
      standard deviation: 53.3361 (0.209161)
      kurtosis: 2.71621
      skewness: -2.02496
      entropy: 0.206267
  Alpha: graya(255,0)   #FFFFFF00
  Rendering intent: Perceptual
  Gamma: 0.454545
  Chromaticity:
    red primary: (0.63999,0.33001)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.05999)
    white point: (0.31269,0.32899)
  Background color: graya(255,1)
  Border color: graya(223,1)
  Matte color: graya(189,1)
  Transparent color: graya(0,0)
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 884x747+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2015-04-21T11:15:21-07:00
    date:modify: 2015-04-21T11:15:28-07:00
    png:cHRM: chunk was found (see Chromaticity, above)
    png:IHDR.bit-depth-orig: 8
    png:IHDR.bit_depth: 8
    png:IHDR.color-type-orig: 6
    png:IHDR.color_type: 6 (RGBA)
    png:IHDR.interlace_method: 0 (Not interlaced)
    png:IHDR.width,height: 884, 747
    png:pHYs: x_res=2835, y_res=2835, units=1
    png:sRGB: intent=0 (Perceptual Intent)
    signature: b30c82674d8ed7b50afbfd0eb86d37346164378ae92ef305b0ab61325e741f52
  Artifacts:
    filename: rgba_src.png
    verbose: true
  Tainted: False
  Filesize: 207KB
  Number pixels: 660K
  Pixels per second: 34.76MB
  User time: 0.016u
  Elapsed time: 0:01.018
  Version: ImageMagick 6.9.1-2 Q16 x86 2015-04-14 http://www.imagemagick.org

>.\ImageMagick-6.9.1-2\convert.exe rgba_src.png -verbose -format PNG32 -colorspace srgb -background transparent -resize 830x540 out.png 
rgba_src.png=>out.png PNG 884x747=>639x540 639x540+0+0 8-bit sRGB 62.8KB 0.406u0:00.107

>.\ImageMagick-6.9.1-2\identify.exe -verbose out.png 
Image: out.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 639x540+0+0
  Resolution: 28.35x28.35
  Print size: 22.5397x19.0476
  Units: PixelsPerCentimeter
  Type: GrayscaleAlpha
  Base type: Grayscale
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 8-bit
    alpha: 8-bit
  Channel statistics:
    Pixels: 345060
    Gray:
      min: 0 (0)
      max: 255 (1)
      mean: 34.1198 (0.133803)
      standard deviation: 77.4794 (0.303841)
      kurtosis: 1.68768
      skewness: 1.88484
      entropy: 0.220331
    Alpha:
      min: 0 (0)
      max: 237 (0.929412)
      mean: 23.5888 (0.092505)
      standard deviation: 53.2132 (0.208679)
      kurtosis: 2.60073
      skewness: -2.00769
      entropy: 0.208417
  Alpha: graya(0,0)   #00000000
  Rendering intent: Undefined
  Gamma: 0.45455
  Chromaticity:
    red primary: (0.63999,0.33001)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.05999)
    white point: (0.31269,0.32899)
  Background color: graya(0,1)
  Border color: graya(223,1)
  Matte color: graya(189,1)
  Transparent color: graya(0,0)
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 639x540+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Zip
  Orientation: Undefined
  Properties:
    date:create: 2015-04-21T11:41:45-07:00
    date:modify: 2015-04-21T12:24:05-07:00
    png:bKGD: chunk was found (see Background color, above)
    png:cHRM: chunk was found (see Chromaticity, above)
    png:gAMA: gamma=0.45455 (See Gamma, above)
    png:IHDR.bit-depth-orig: 8
    png:IHDR.bit_depth: 8
    png:IHDR.color-type-orig: 4
    png:IHDR.color_type: 4 (GrayAlpha)
    png:IHDR.interlace_method: 0 (Not interlaced)
    png:IHDR.width,height: 639, 540
    png:pHYs: x_res=2835, y_res=2835, units=1
    png:text: 2 tEXt/zTXt/iTXt chunks were found
    png:tIME: 2015-04-21T11:15:28Z
    signature: 3d4b5050f182dac93631d9119d76324d43f9a659ea035523a8e359b7434bdb5b
  Artifacts:
    filename: out.png
    verbose: true
  Tainted: False
  Filesize: 62.8KB
  Number pixels: 345K
  Pixels per second: 57.51MB
  User time: 0.000u
  Elapsed time: 0:01.006
  Version: ImageMagick 6.9.1-2 Q16 x86 2015-04-14 http://www.imagemagick.org

最佳答案

您可以尝试使用 -define强制输出图像类型为 PNG Color-Type 6像这样:

convert input.png ... -define png:color-type=6 output.png

关于imagemagick - 防止 ImageMagick 转换为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781436/

相关文章:

c++ - 使用 openMPI 发送对象

php - 如何为 WAMP 2.5 安装 ImageMagick

php - 将多页pdf转换为多图像

imagemagick - 尝试将200个jpg文件转换为带有ImageMagick的mp4。一遍又一遍地收到相同的错误

python - 从 ImageMagick 的 Compare.exe 获取终端输出时出现问题(通过管道或 Python)

php - 使用 PHP 从 .pdf 中提取页面

pdf - 为什么使用 imagemagick 从此 pdf 渲染 png 会创建这些条纹伪影?

macos - 使用 ImageMagick 为图像批量添加空白

centos - ImageMagick - 在 ubuntu 而不是 centos 上工作的命令

php - 在 PHP 中使用 ImageMagick 从命令行调整图像大小