Hi Irv,

Found this on Google.
https://graphicdesign.stackexchange.com/questions/67964/what-does-24bit-mean-exactly-when-referring-to-png-image-file

If it is correct, then the alpha channel would show up on a PNG with 32 bit
depth.
E.g
(R,G,B) -> (8 bits, 8 bits, 8 bits) = PNG-24
(R,G,B, A) -> (8 bits, 8 bits, 8 bits, 8 bits) = PNG-32

That being said. I'm not 100% sure on this, but I think convert_alpha() can
handle images without an alpha channel anyway.


On Thu, 17 Sep 2020, 00:47 Irv Kalb, <i...@furrypants.com> wrote:

> I'm updating a class that loads and displays an image - an Image class.
> The class also has many additional calls to rotate, scale, show, hide,
> etc.  I'm using pygame 1.9.6 with Python 3.7.3
>
> I know that I should be converting the original image that is loaded into
> a better format for displaying in a window. So I want to change my code to
> take care of that conversion.  My understanding is that if the image has an
> alpha channel, then when I load the image I should use ".convert_alpha()",
> and if not, I should use ".convert()".  (Please let me know if this is not
> correct.)
>
> I want people who use this class to be able to load any image (typically
> png or jpg file), and have my code do the conversion the appropriate way
> without having to ask the caller to let me know the type of the image.
>
> Therefore, in my class, when I load an image, I want to know if the image
> has an alpha channel.  I'm not sure of the best way of doing this.  So far,
> I've come up with two different ways to do this.
>
> Approach #1 - check the extension of the file:
>
> self.originalImage = pygame.image.load(path)
> if path.endswith('.png'):
>     self.originalImage.convert_alpha()
> else:
>     self.originalImage.convert()
>
>
> Approach #2 - check the bitdepth of the image:
>
> self.originalImage = pygame.image.load(path)
> if pygame.Surface.get_bitsize(self.origialImage) == 24:
>     self.originalImage.convert_alpha()
> else:
>     self.originalImage.convert()
>
>
> In my tests, both seem to work, but I don't feel completely comfortable with 
> either one.  I know very little about art - for example, I don't know if all 
> ".png" files have an alpha channel.  I'm also not sure if all images with an 
> alpha channel are 24 bits deep.
>
> Looking to see if either of these is better than the other, or if there is a 
> different approach that I should take.  Open to suggestions.
>
> Thanks in advance,
>
> Irv
>
>

Reply via email to