from PIL import Image try: im = Image.open(file) except IOError: print "failed to identify", file else: print "image format:", im.format print "image mode:", im.mode print "image size:", im.size if im.info.has_key("description"): print "image description:", im.info["description"] MODEBITS = { # bits per pixel for common PIL image modes "1": 1, "P": 8, "L": 8, "RGB": 24, "RGBA": 32, "CMYK": 32 } try: bits = MODEBITS[im.mode] imagebytes = ((im.size[0] * bits + 7) / 8) * im.size[1] filebytes = os.stat(file)[ST_SIZE] except (IOError, KeyError): print "failed to determine compression ratio for", file else: print "compression:", round(imagebytes / filebytes, 2), "times" ''' The compression ratio is close to 1 for non-compressed formats like BMP and PPM, typically 2-10 for GIF and other lossless compression formats, and 10-20 for JPEG files. '''