view bin/recompress @ 95:a5324d2cc0eb

Updated documentation.
author Edho Prima Arief <edho@myconan.net>
date Thu, 14 Jul 2011 00:50:23 +0700
parents 9790bc126ea6
children 9be628347dce
line wrap: on
line source

#!/usr/bin/env python

import sys, os
from PIL import Image


# Raises a generic exception (exception.Exception) if input is not a PNG file.
def repng(filename):
  im = Image.open(filename)
  if im.format == "PNG":
    im.save(filename, "PNG", optimize=1)
  else:
    raise Exception("Not a PNG image file")

def hbytes(inbyte):
  units = ["B", "kB", "MB", "GB", "TB", "PB"] 
  outbyte = float(inbyte)
  current_unit = 0
  while outbyte > 1000:
    outbyte /= 1000
    current_unit += 1
  return "%.2f %s" % (outbyte, units[current_unit])

if __name__ == "__main__":
  for filename in sys.argv[1:]:
    print "Recompressing %s:" % filename,
    sys.stdout.flush()
    try:
      byte_orig = os.path.getsize(filename)
      repng(filename)
      byte_new = os.path.getsize(filename)
      print "OK (%s => %s, %.2f%% saving)" % (hbytes(byte_orig), hbytes(byte_new), (byte_orig - byte_new)*100/float(byte_orig)),
      re = 0
    except:
      print "Failed",
      print "(%s: %s)" % (sys.exc_type, sys.exc_value),
      re = 1
    finally:
      print "[%s]" % re