[Image-SIG] Saving GIFs with added transparency

Stephen Purcell steve@websentric.com
Mon, 15 Feb 1999 15:27:44 +0100


This is a cryptographically signed message in MIME format.

--------------msB0268718DE034B12D1617CE7
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I've been trying to do the following with the latest PIL beta release:

	1. Load a non-transparent GIF image
	2. Mark one of its colours as transparent
	3. Save as a new GIF

I tried doing this by setting the 'transparency' entry of the image's
'info' dictionary.  On saving, this information was ignored.  Maybe this
was the wrong way to do it, but if it's not, I have a patch to offer for
'GifImagePlugin.py'.

It involves the addition of the following lines before the 'return' of
the 'getheader' function:

    if im.info.has_key('transparency'):
        transparentIndex = im.info['transparency']
        s.append('!' + chr(0xf9) + chr(4) + chr(1) + chr(0) + chr(0) +
                 chr(transparentIndex) + chr(0))

Perhaps this is useful to someone else out there.

Regards,


-Steve P.

BTW, I based my patch/hack on:

	http://www.acme.com/resources/classes/Acme/JPM/Encoders/GifEncoder.java
--
Steve Purcell
Software Design Engineer
WebSentric Software AG
--------------msB0268718DE034B12D1617CE7
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIIIHwYJKoZIhvcNAQcCoIIIEDCCCAwCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCC
Bf4wggKuMIICF6ADAgECAgIsGDANBgkqhkiG9w0BAQQFADCByDELMAkGA1UEBhMCWkExFTAT
BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxGjAYBgNVBAoTEVRo
YXd0ZSBDb25zdWx0aW5nMTMwMQYDVQQLEypDZXJ0aWZpY2F0ZSBTZXJ2aWNlcyBSU0EgSUsg
MTk5OC4yLjI1IDg6MzUxOzA5BgNVBAMTMlRoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBSU0Eg
SXNzdWluZyBLZXkgMTk5OC4yLjI1MB4XDTk4MDcwNzA3MzYwNFoXDTk5MDcwNzA3MzYwNFow
WzE0MDIGA1UEAxYrVGhhd3RlIEZyZWVtYWlsIE1lbWJlciBzdGV2ZUB3ZWJzZW50cmljLmNv
bTEjMCEGCSqGSIb3DQEJARYUc3RldmVAd2Vic2VudHJpYy5jb20wXDANBgkqhkiG9w0BAQEF
AANLADBIAkEAqGXOfNu76sfiriGkF/+S6YaeReHudcqYme9jsRlPjlixaRUCOwOYOkSCe2UU
VO/y4U1/i+b4ArkNmJ0YJJ93fQIDAQABo1cwVTAUBglghkgBhvhCAQEBAf8EBAMCBaAwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFqAU7TQXbg4rXkuHmJG4N6eY
v5IfrHIwDQYJKoZIhvcNAQEEBQADgYEAJ0nMj/83Pw2S1fm3k4/7j1+LvJqLTf2wdmwGJRP+
9AiCeYGEoJSuOP6NMcbMFQLgIWPx7eQzcE0X7a12IzCvTKfc7drUVYxovL8sIRjO8wYSUpbU
kFSHcsaP5LDjhaK4TixXtV7uT3XmL6d49Te4B+wyNNtmpD1EYMwEbyyQPtIwggNIMIICsaAD
AgECAgEIMA0GCSqGSIb3DQEBBAUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVy
biBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5n
MSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtU
aGF3dGUgUGVyc29uYWwgRnJlZW1haWwgQ0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZy
ZWVtYWlsQHRoYXd0ZS5jb20wHhcNOTgwMjI1MDgzNTMzWhcNMDAwMjI1MDgzNTMzWjCByDEL
MAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmls
bGUxGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMTMwMQYDVQQLEypDZXJ0aWZpY2F0ZSBT
ZXJ2aWNlcyBSU0EgSUsgMTk5OC4yLjI1IDg6MzUxOzA5BgNVBAMTMlRoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBSU0EgSXNzdWluZyBLZXkgMTk5OC4yLjI1MIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDHMcPEG5kjctJRhZVM41mS5OhsgbX0G18J5sSts0RvqjjXV+Swxcu6dK5M
YSMkdgb42V0NiiiytCvtDbtSJPS3xUmng2P8CgSw74Eo9+aRxk2X7pJ2JmLIYzd2PLGSD9yt
UgaKccU3MWqG270IaShZ/O3HfSZn3U3e08UC/ne24QIDAQABozcwNTASBgNVHRMBAf8ECDAG
AQH/AgEAMB8GA1UdIwQYMBagFHJJwnM0xlX0C3ZygX539IfnxrIOMA0GCSqGSIb3DQEBBAUA
A4GBAELq7YthfqHUXFKpPL2enHnoCYsSga2PHVpG7fElJlvIrv16IRbNoB47lzOD+043KiiX
pkj1KBgCJHyAe1NQtftvmvxtqlwmRagvNiJY0xsCAx/ulDnw/jRaiEsbPYzz137Tn3BbdvbY
xOK2PCSdCSWMWbHUi/P8BIIOnimGbMX/MYIB6TCCAeUCAQEwgc8wgcgxCzAJBgNVBAYTAlpB
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMRowGAYDVQQK
ExFUaGF3dGUgQ29uc3VsdGluZzEzMDEGA1UECxMqQ2VydGlmaWNhdGUgU2VydmljZXMgUlNB
IElLIDE5OTguMi4yNSA4OjM1MTswOQYDVQQDEzJUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwg
UlNBIElzc3VpbmcgS2V5IDE5OTguMi4yNQICLBgwCQYFKw4DAhoFAKCBsTAYBgkqhkiG9w0B
CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw05OTAyMTUxNDI3NDRaMCMGCSqGSIb3
DQEJBDEWBBSY5wKT30EW6Mrn3SzzlvWZ0TkqRzBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3
DQMHMA4GCCqGSIb3DQMCAgIAgDAHBgUrDgMCBzANBggqhkiG9w0DAgIBQDANBggqhkiG9w0D
AgIBKDANBgkqhkiG9w0BAQEFAARAYSOYqxKToTqiNkNLzzp5Ames5NmnjA6o+GsICl0Vv3IW
6jAk9ODa0/3nmEXidb3H+fi9X0eXucWzAD6dLlNpbg==
--------------msB0268718DE034B12D1617CE7--