[Image-SIG] transparency in palette mode ( "P" ) images

Ivan Mincik ivan.mincik at gista.sk
Tue Oct 20 20:51:13 CEST 2009


On Tue, Oct 20, 2009 at 8:33 PM, Laura & Edward Cannon
<cannon.el at gmail.com> wrote:
> Hm.. you seem to be right. One thing you might do is im =
> Image.open("test.png").convert("RGBA") which seems to solve the
> transparency problem, at the expense of a slightly larger image file.

No, even if using convert("RGBA") I get incorrect result :(


> Looking closer I think that PIL seems to support only RGB palettes
> rather than RGBA palettes as does the PNG specification. Converting to
> RGBA would make editing work as expected, and would preserve all
> transparency information. If you just need to move/rename the image,
> try shutil.copy in the standard library.
> Edward
>
> On Tue, Oct 20, 2009 at 9:53 AM, Ivan Mincik <ivan.mincik at gista.sk> wrote:
>> On Tuesday 20 October 2009, you wrote:
>>> The problem seems to be that you set transparency=0 in your save.
>>> Leave it out ( im.save("out.png") ) and you should be fine.
>>
>> Many thanks for reply, but I think You are not right. If I save without 'transparency=0' I will loose my transparent background at all - it will be black.  With  'transparency=0' I loose only transparency of my drawing, backround is OK.
>> My test image is here: http://gista.sk/dl/test.png
>>
>>
>>> If you just need to change the name try shutil.copy in the standard library.
>>>
>>> On Mon, Oct 19, 2009 at 2:05 PM, Ivan Mincik <ivan.mincik at gmail.com> wrote:
>>> > Dear list,
>>> > I have PNG image in  palette mode, with 256 color palette. Every color
>>> > has different level of transparency.
>>> > For example:
>>> >  Color Table (RGB with 256 entries)
>>> >    0: 0,0,0,0
>>> >    1: 238,238,238,154
>>> >    2: 253,253,109,154
>>> >    3: 0,0,0,2
>>> >    4: 0,0,0,4
>>> >    5: 0,0,0,8
>>> >    6: 0,0,0,6
>>> >    7: 237,237,237,154
>>> >    8: 0,0,0,14
>>> >    9: 35,35,15,153
>>> >   10: 1,1,0,138
>>> >
>>> > I am trying just to open and save this image using PIL.
>>> > #!/usr/bin/python
>>> > import Image
>>> >
>>> > im = Image.open('test.png')
>>> > im.save('out.png', transparency=0 )
>>> >
>>> > After running this code, the resulting image is loosing transparency
>>> > information for each color and it is set to 255.
>>> >  Color Table (RGB with 256 entries)
>>> >    0: 0,0,0,0
>>> >    1: 238,238,238,255
>>> >    2: 253,253,109,255
>>> >    3: 0,0,0,255
>>> >    4: 0,0,0,255
>>> >    5: 0,0,0,255
>>> >    6: 0,0,0,255
>>> >    7: 237,237,237,255
>>> >    8: 0,0,0,255
>>> >    9: 35,35,15,255
>>> >   10: 1,1,0,255
>>> >
>>> > Is there any way how to save the image with exactly same palette as
>>> > original image ?
>>> >
>>> > For anybody wanting to look at this problem, You can download my test
>>> > image here:
>>> > http://gista.sk/dl/test.png
>>> >
>>> > Thanks,
>>> > Ivan
>>> > _______________________________________________
>>> > Image-SIG maillist  -  Image-SIG at python.org
>>> > http://mail.python.org/mailman/listinfo/image-sig
>>> >
>>>
>>
>>
>>
>> --
>> Ivan Mincik
>> Gista s.r.o.
>>
>


More information about the Image-SIG mailing list