rawmode = "F;32NF" # 32-bit native floating point ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) def _save_spider(im, fp, filename): # get the filename extension and register it with Image ext = os.path.splitext(filename)[1] Image.register_extension(SpiderImageFile.format, ext) _save(im, fp, filename) # -------------------------------------------------------------------- Image.register_open(SpiderImageFile.format, SpiderImageFile) Image.register_save(SpiderImageFile.format, _save_spider) if __name__ == "__main__": if len(sys.argv) < 2: print("Syntax: python SpiderImagePlugin.py [infile] [outfile]") sys.exit() filename = sys.argv[1] if not isSpiderImage(filename): print("input image must be in Spider format") sys.exit() im = Image.open(filename) print("image: " + str(im)) print("format: " + str(im.format))
retcode = convert_proc.wait() # remove the temporary files shutil.rmtree(iconset) if retcode: raise CalledProcessError(retcode, convert_cmd) Image.register_open(IcnsImageFile.format, IcnsImageFile, lambda x: x[:4] == b'icns') Image.register_extension(IcnsImageFile.format, '.icns') if sys.platform == 'darwin': Image.register_save(IcnsImageFile.format, _save) Image.register_mime(IcnsImageFile.format, "image/icns") if __name__ == '__main__': if len(sys.argv) < 2: print("Syntax: python IcnsImagePlugin.py [file]") sys.exit() imf = IcnsImageFile(open(sys.argv[1], 'rb')) for size in imf.info['sizes']: imf.size = size imf.load() im = imf.im im.save('out-%s-%s-%s.png' % size)