Page 1 of 1

IM can't tell that alpha channel is turned off in PSD file

Posted: 2013-11-11T09:12:02-07:00
by Bob Pickle
Hi.

I was processing a large number of PSD files, and ran into problems with three of them. These three all had a background image layer with an alpha channel, and ImageMagick's incorrect output matched that alpha channel. However, in the PSD files, the alpha channel was turned off, deactivated, invisible, however you want to say it. But for some reason ImageMagick can't seem to tell that the alpha channel was off.

I am able to do the following as a workaround:

Code: Select all

convert \( -alpha off test.psd[0] \) test.png
But still, it seems like a bug. If the 0 layer is a composite of all the layers and does not include the alpha channel because it is turned off in the PSD, then it doesn't seem like I should have to turn off the alpha channel when using ImageMagick to further process the image. Why would ImageMagick act as if that image channel is on when it's off?

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T10:22:21-07:00
by fmw42
did you try

convert \( test.psd[0] -alpha off \) test.png

if that does not work, then post a link to your psd file and provide your IM version and platform

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T11:56:16-07:00
by Bob Pickle
Sure, that works, just as well as \( -alpha off test.psd[0] \). But isn't it a bug that one would have to tell IM to ignore an alpha channel that is already off, deactivated, disabled, not used within that PSD? I can understand if the alpha channel was enabled, but it isn't. Why should I have to tell IM to ignore the alpha channel when it is already being ignored by the PSD?

I'm using the latest IM version on Cygwin under WinXP, and under CentOS.

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T12:15:03-07:00
by fmw42
Bob Pickle wrote:Sure, that works, just as well as \( -alpha off test.psd[0] \). But isn't it a bug that one would have to tell IM to ignore an alpha channel that is already off, deactivated, disabled, not used within that PSD? I can understand if the alpha channel was enabled, but it isn't. Why should I have to tell IM to ignore the alpha channel when it is already being ignored by the PSD?

I'm using the latest IM version on Cygwin under WinXP, and under CentOS.

Either post a link to your image or post the output from

identify -verbose test.psd[0]

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T13:02:44-07:00
by Bob Pickle

Code: Select all

Image: test.psd
  Base filename: test.psd
  Format: PSD (Adobe Photoshop bitmap)
  Class: DirectClass
  Geometry: 886x1299+0+0
  Resolution: 150x150
  Print size: 5.90667x8.66
  Units: Undefined
  Type: TrueColorMatte
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8-bit
  Channel depth:
    red: 8-bit
    green: 8-bit
    blue: 8-bit
    alpha: 8-bit
  Channel statistics:
    Red:
      min: 48 (0.188235)
      max: 255 (1)
      mean: 159.585 (0.625823)
      standard deviation: 53.7489 (0.21078)
      kurtosis: -0.770784
      skewness: -0.19957
    Green:
      min: 2 (0.00784314)
      max: 255 (1)
      mean: 126.572 (0.496361)
      standard deviation: 53.1672 (0.208499)
      kurtosis: -0.747776
      skewness: -0.169755
    Blue:
      min: 0 (0)
      max: 255 (1)
      mean: 83.6967 (0.328223)
      standard deviation: 49.8732 (0.195581)
      kurtosis: -0.814028
      skewness: 0.0614875
    Alpha:
      min: 0 (0)
      max: 255 (1)
      mean: 1.82133 (0.00714248)
      standard deviation: 21.1796 (0.0830574)
      kurtosis: 135.587
      skewness: -11.6999
  Image statistics:
    Overall:
      min: 0 (0)
      max: 255 (1)
      mean: 155.758 (0.610816)
      standard deviation: 46.507 (0.18238)
      kurtosis: 11.4561
      skewness: -0.634761
  Alpha: srgba(125,104,75,0)   #7D684B00
  Rendering intent: Perceptual
  Gamma: 0.45455
  Chromaticity:
    red primary: (0.64,0.33)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.06)
    white point: (0.3127,0.329)
  Interlace: None
  Background color: white
  Border color: srgba(223,223,223,1)
  Matte color: grey74
  Transparent color: none
  Compose: Over
  Page geometry: 886x1299+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: RLE
  Orientation: Undefined
  Properties:
    date:create: 2013-11-07T08:46:48-06:00
    date:modify: 2013-09-06T06:11:00-05:00
    dc:format: application/vnd.adobe.photoshop
    photoshop:ColorMode: 3
    photoshop:ICCProfile: sRGB IEC61966-2.1
    rdf:Bag:




    signature: 172faa8425a2a869fb93ef280280783b598604606098b480cd3a9c1954406453
    tiff:XResolution: 150
    tiff:YResolution: 150
    xmp:CreateDate: 2010-02-01T08:56:13-05:00
    xmp:CreatorTool: Adobe Photoshop CS5 Windows
    xmp:MetadataDate: 2013-09-01T18:34:33+03:00
    xmp:ModifyDate: 2013-09-01T18:34:33+03:00
    xmpMM:DocumentID: xmp.did:1BEA3D8F390FDF11844EBA7C64DE414F
    xmpMM:InstanceID: xmp.iid:5B61BEDC1B13E3119CCA93DA9C482AF2
    xmpMM:OriginalDocumentID: xmp.did:1BEA3D8F390FDF11844EBA7C64DE414F
  Profiles:
    Profile-8bim: 29974 bytes
    Profile-exif: 302 bytes
    Profile-icc: 3144 bytes
      Description: sRGB IEC61966-2.1
      Manufacturer: IEC http://www.iec.ch
      Model: IEC 61966-2.1 Default RGB colour space - sRGB
      Copyright: Copyright (c) 1998 Hewlett-Packard Company
    Profile-iptc: 95 bytes
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      City[1,90]: 0x00000000: 254700                                        -%
      unknown[2,0]: ▒[
    Profile-xmp: 15798 bytes
  Artifacts:
    filename: test.psd[0]
    verbose: true
  Tainted: False
  Filesize: 16.9MB
  Number pixels: 1.151M
  Pixels per second: 136KB
  User time: 0.172u
  Elapsed time: 0:09.484
  Version: ImageMagick 6.7.6-3 2012-04-28 Q16 http://www.imagemagick.org
I just verified in PhotoShop that the alpha channel of this layer is not visible.

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T13:17:03-07:00
by fmw42
Is the alpha channel actually a channel or is it background transparency?

If the former, then I guess IM does not know how to tell if it is disabled. It only knows that you have an alpha channel.

I just opened a file in PS CS (rather old) and added an alpha channel and saved the file to psd format. No matter what settings I use to enable or disable the alpha channel, IM does not see any alpha channel using IM 6.8.7.5 Q16 and identify -verbose image.psd

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T18:25:03-07:00
by Bob Pickle
I'm using PhotoShop CS2.

I removed everything possible from test.psd and left two layers. It is at http://www.pickle-publishing.com/images/test.psd. If you check the channel palette, it says that there is an alpha channel that isn't visible. Remove that invisible channel, and IM will convert the PSD correctly. Leave that invisible channel, and IM does not convert the PSD correctly.
fmw42 wrote:If the former, then I guess IM does not know how to tell if it is disabled. It only knows that you have an alpha channel.
That could be it. I would have thought that the composite [0] layer already takes into account whatever effect the alpha channel does or does not have, but maybe it doesn't.

I just did some testing, and if a color channel is disabled, IM still uses it as well. And if I use PhotoShop to save the image as a PNG, invisible RGB channels get included as well, though the alpha channel issue does not occur.

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T19:58:57-07:00
by fmw42
Your image has two layers, one of which contains background transparency. It also has an alpha channel. IM is apparently using the two layers and ignoring the alpha channel, probably because it uses the alpha layer and not the alpha channel, though I always thought it was the other way around. IM can only get alpha from one or the other and not both.

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T22:06:49-07:00
by Bob Pickle
Thanks so much for your help.

I'm not sure I understand.

1. Where in PhotoShop can I see that one of the layers had background transparency?

2. If IM is ignoring the alpha channel, why is the output correct after I delete the alpha channel?

Re: IM can't tell that alpha channel is turned off in PSD fi

Posted: 2013-11-11T23:51:26-07:00
by fmw42
Perhaps I misunderstand PS, but your two layers seem to have a transparent background.

As far as I can tell from my test and your image, IM is ignoring the alpha channel.


Try my test. Open any sRGB jpg image in PS. Add a new alpha channel and draw or erase some part so that it is black and white as an alpha channel. Save the file to psd. Use identify -verbose image.psd to look for alpha channel. For me there is none.