import Image, time def transparent(im): p = im.getpalette() p[6] = 255 p[7] = 255 p[8] = 255 im.putpalette(p) return im def convert1(im): im = transparent(im) im = im.convert('L') im = im.resize((127,47), Image.ANTIALIAS) def invert(p): return 255^p new = Image.new('L', im.size, 0) im = Image.eval(im, invert) n = Image.merge('RGBA', (new, new, new, im)) return n def convert2(im): im = transparent(im) im = im.convert('L') im = im.resize((127,47), Image.ANTIALIAS) im = im.convert('P') p = im.getpalette() p.reverse() im.putpalette(p) im = im.convert('L') new = Image.new('L', im.size, 0) n = Image.merge('RGBA', (new, new, new, im)) return n im = Image.open('1.gif') starttime = time.time() im1 = convert1(im) im1.save('convert1.png') endtime = time.time() print endtime-starttime print starttime = time.time() im2 = convert2(im) im2.save('convert2.png') #this is faster endtime = time.time() print endtime-starttime