Page 1 of 1

Possible bug converting grayscale to sRGB PNG

Posted: 2017-12-22T11:27:05-07:00
by fmw42
.
When converting a grayscale image to RGB PNG, the string format %[colorspace] says sRGB but identify -verbose says grayscale. I think identify -verbose is wrong.

Code: Select all

convert logo: -colorspace gray logo.jpg
convert logo.jpg PNG24:logo.png
convert logo.png -format "%[colorspace]" info:
sRGB

Code: Select all

identify -verbose logo.png
Image: logo.png
...
Colorspace: Gray
...
png:IHDR.color-type-orig: 2
png:IHDR.color_type: 2 (Truecolor)


This occurs in IM 6.9.9.27 Q16 Mac OSX Sierra and IM 7.0.7.15 Q16 HDRI

Re: Possible bug converting grayscale to sRGB PNG

Posted: 2017-12-22T12:17:14-07:00
by magick
Note identify -verbose says "Base colorspace: sRGB". The colorspace of gray is the colorspace *after* the image is analyzed. It means that all the colors have identical red, green, and blue intensities.

Re: Possible bug converting grayscale to sRGB PNG

Posted: 2017-12-22T13:09:56-07:00
by fmw42
That is confusing to me.

Usually it says colorspace sRGB but type=grayscale. I do not see any Base colorspace in identify -verbose for the example above.

Code: Select all

Image: logo.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 640x480+0+0
  Units: Undefined
  Type: Grayscale
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 8-bit
  Channel statistics:
There is only colorspace and type.

If I do the same with miff using -type truecolor, I still get grayscale.

Code: Select all

convert logo: -colorspace gray logo.jpg
convert logo.jpg -type truecolor logo.miff
convert logo.miff -format "%[colorspace]\n" info:
Gray

Code: Select all

identify -verbose logo.miff
Image: logo.miff
  Format: MIFF (Magick Image File Format)
  Class: DirectClass
  Geometry: 640x480+0+0
  Units: Undefined
  Type: Grayscale
  Base type: Grayscale
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 8-bit

The point is that sometimes other tools can only read RGB images even when they are grayscale. We had ways around this before.


From the -define section of the options page:

"colorspace:auto-grayscale=on|off prevent automatic conversion to grayscale inside coders that support grayscale. This should be accompanied by -type truecolor. PNG and TIF do not need this define. With PNG, just use PNG24:image. With TIF, just use -type truecolor. JPG and PSD will need this define."

So using PNG24: should have converted the image to colorspace sRGB. Likewise, I would have thought using -type truecolor would have worked with miff:, but it does not.

With TIFF, I get similar results as to PNG -- %[colorspace] returns sRGB, but identify -verbose returns colorspace gray.

Code: Select all

convert logo.jpg -type truecolor logo.tiff
convert logo.tiff -format "%[colorspace]" info:
sRGB

identify -verbose logo.tiff
Image: logo.tiff
  Format: TIFF (Tagged Image File Format)
  Mime type: image/tiff
  Class: DirectClass
  Geometry: 640x480+0+0
  Units: PixelsPerInch
  Type: Grayscale
  Base type: TrueColor
  Endianess: LSB
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 8-bit

Re: Possible bug converting grayscale to sRGB PNG

Posted: 2017-12-22T13:38:08-07:00
by magick
Thanks for the problem report. We can reproduce it and will have a patch to fix it in GIT master branch @ https://github.com/ImageMagick/ImageMagick later today. The patch will be available in the beta releases of ImageMagick @ https://www.imagemagick.org/download/beta/ by sometime tomorrow.