def savePicture(picture, filename): if type(picture) == type([]): import ImageChops from GifImagePlugin import getheader, getdata # open output file fp = open(filename, "wb") previous = None for im in picture: if type(im) == type(""): # filename im = Image.open(im) im.load() im = im.convert("P") # in case jpeg, etc else: im = im.image.convert("P") if not previous: for s in getheader(im) + getdata(im): fp.write(s) else: delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() if bbox: for s in getdata(im.crop(bbox), offset=bbox[:2]): fp.write(s) previous = im.copy() fp.write(";") fp.close() else: return picture.image.save(filename)
def savePicture(picture, filename): if type(picture) == type([]): import ImageChops from GifImagePlugin import getheader, getdata # open output file fp = open(filename, "wb") previous = None for im in picture: if type(im) == type(""): # filename im = Image.open(im) im.load() im = im.convert("P") # in case jpeg, etc else: im = im.image.convert("P") if not previous: for s in getheader(im) + getdata(im): fp.write(s) else: delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() if bbox: for s in getdata(im.crop(bbox), offset = bbox[:2]): fp.write(s) previous = im.copy() fp.write(";") fp.close() else: return picture.image.save(filename)
def makedelta(fp, sequence): """Convert list of image frames to a GIF animation file""" previous = None for im in sequence: if not previous: # global header for s in getheader(im) + getdata(im): fp.write(s) else: # delta frame delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() if not bbox: bbox = (0,0, 1,1) # compress difference for s in getdata(im.crop(bbox), offset = bbox[:2]): fp.write(s) previous = im.copy() fp.write(";")
def makedelta(fp, sequence): """Convert list of image frames to a GIF animation file""" frames = 0 previous = None for im in sequence: # # FIXME: write graphics control block before each frame if not previous: # global header for s in getheader(im) + getdata(im): fp.write(s) else: # delta frame delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() if bbox: # compress difference for s in getdata(im.crop(bbox), offset = bbox[:2]): fp.write(s) else: # FIXME: what should we do in this case? pass previous = im.copy() frames = frames + 1 fp.write(";") return frames
def makedelta(fp, sequence): """Convert list of image frames to a GIF animation file""" frames = 0 previous = None for im in sequence: # # FIXME: write graphics control block before each frame if not previous: # global header for s in getheader(im) + getdata(im): fp.write(s) else: # delta frame delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() if bbox: # compress difference for s in getdata(im.crop(bbox), offset=bbox[:2]): fp.write(s) else: # FIXME: what should we do in this case? pass previous = im.copy() frames = frames + 1 fp.write(";") return frames
def makeAnimatedGIF(filename, images): """Convert list of image frames to a GIF animation file using simple delta coding""" frames = 0 previous=None fp = open(filename, 'wb') if images[0].mode in ['RGB','RGBA']: #first make an optimised palette optimPalette=makePalette(images, verbose=True) for n, im in enumerate(images): print 'converting frame %i of %i to GIF' %(n+1,len(images)) if im.mode=='RGB': im = rgb2palette(im, palette=optimPalette, verbose=False) if not previous: # global header for s in getheader(im) + getdata(im): fp.write(s) else: # delta frame delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() # compress difference if bbox: for s in getdata(im.crop(bbox), offset = bbox[:2]): fp.write(s) else: for s in getdata(im): fp.write(s) previous = im.copy() frames = frames + 1 fp.write(";") fp.close() return frames
def makeAnimatedGIF(filename, images): """Convert list of image frames to a GIF animation file using simple delta coding""" frames = 0 previous = None fp = open(filename, 'wb') if images[0].mode in ['RGB', 'RGBA']: #first make an optimised palette optimPalette = makePalette(images, verbose=True) for n, im in enumerate(images): print 'converting frame %i of %i to GIF' % (n + 1, len(images)) if im.mode == 'RGB': im = rgb2palette(im, palette=optimPalette, verbose=False) if not previous: # global header for s in getheader(im) + getdata(im): fp.write(s) else: # delta frame delta = ImageChops.subtract_modulo(im, previous) bbox = delta.getbbox() # compress difference if bbox: for s in getdata(im.crop(bbox), offset=bbox[:2]): fp.write(s) else: for s in getdata(im): fp.write(s) previous = im.copy() frames = frames + 1 fp.write(";") fp.close() return frames