from graphics import * import struct, zlib def foo(self, x,y): # Image.getpixel pos = y*(self.size[0]*3+1) + 3*x+1 # each line has '\x00' prefix return struct.unpack('3B', self.pixels[pos:pos+3]) # add getpixel to class Image foo.im_class = Image foo.im_func = foo Image.getpixel = foo def enable(im): im.save('D:\\pixels.png', bpp=24, compression='no') f = open('D:\\pixels.png', 'rb') f.seek(8 +8+13+4) chunk = [] while 1: n = struct.unpack('>L', f.read(4))[0] if n==0: break # 'IEND' chunk f.read(4) # 'IDAT' chunk.append(f.read(n)) f.read(4) # CRC f.close() data = zlib.decompress(''.join(chunk)) im.pixels = data # data will be retrived by im.getpixel(x,y)