Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent ImageMagick converting to grayscale

I'm using ImageMagick-6.9.1 on Windows to resize a PNG file before processing it with another tool. The source file is RGBA, but the image data is grayscale (all pixels have the same value for R, G, and B). It appears that ImageMagick is detecting this, and converting the output to grayscale, even if I specify format and colorspace like so:

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

I've verified the resulting output format is 8-bit greyscale in a couple different applications, including Photoshop. This is an issue because the later processing steps can't handle the grayscale formatting, and crash. Adding a tint to the source lets the process complete successfully, but we need to be able to process the untinted originals.

How can I force ImageMagick to output an RGB formatted image even if it detects that the source is grayscale?

Longer log: (note conversion in IHDR from color_type 6 to 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
like image 971
superstator Avatar asked Apr 21 '15 19:04

superstator


1 Answers

You might try using a -define to force the output image type to PNG Color-Type 6 like this:

convert input.png ... -define png:color-type=6 output.png
like image 138
Mark Setchell Avatar answered Nov 17 '22 08:11

Mark Setchell