Hello alll,

Apologies if this isn't the correct list.

I'm getting my feet wet with the Python Imaging Library (PIL) 1.1.6 on
Python 2.5.1.  I have played around quite a bit with transparent GIFs,
and from what I can tell, PIL should support what I want to do -
except I can't seem to get it to work.

I have a large number of smallish icons (GIFs with transparency) that
I'd like to tile into a grid in one large GIF image.  The background
color of the image should be GIF-transparent.  Currently, I can set it
to be white or black or any other color I want, just not transparent.
My current code:

import os, sys
from PIL import Image, ImageColor

# size in pixels of each row/col
ROWSIZE = 50
COLSIZE = 50

# maxwidth of sprite grid
SPRITEWIDTH = 20
MAXWIDTH = COLSIZE*SPRITEWIDTH

FILENAME = '/static/images/icons.gif'

def merge():
    pwd = os.getcwd()
    imagePath = os.path.join(pwd, 'images')

    # Somehow, I need to ensure the palette used in the sprite image
    # is the same as the individual icons
    sprites = Image.new('RGBA', (MAXWIDTH, MAXWIDTH), (253,253,253,0))
    sprites.putalpha(0)

    palette = None
    colors = []
    col = 10
    row = 10

    for f in os.listdir(imagePath):
        try:
            im = Image.open(os.path.join(imagePath, f))

            if im.size[0] <= 20 and im.size[1] <= 20 and im.format ==
'GIF':
                sprites.paste(im.copy(), (col, row))
                print 'url(/static/images/%s) => url(%s) -%dpx -%dpx'
% (f, FILENAME, col, row)
                col += COLSIZE
                if col >= MAXWIDTH:
                    row += ROWSIZE
                    col = 10

                if row >= sprites.size[1]:
                    break

        except IOError, ex:
            pass

    sprites = sprites.crop((0,0,MAXWIDTH, row)).point(lambda pt: pt ==
(253, 253, 253, 0) and 0 or pt)
    return sprites

So this code is obviously littered with the detritus of failed
attempts to get transparency to work.  Has anyone out there had any
experience with this?

Thanks,

David

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to