diff bin/recompress @ 113:9b91e702c19c

Latestest merge.
author Edho Prima Arief <edho@myconan.net>
date Wed, 19 Oct 2011 06:51:43 +0000
parents 97e24e89388f
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/recompress	Wed Oct 19 06:51:43 2011 +0000
@@ -0,0 +1,46 @@
+#!/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])
+
+def sane_fn(filename):
+  import re
+  return re.sub(r"[\x00-\x1F\x7F\n\r]", "?", filename)
+
+def main(files):
+  for filename in files:
+    print "Recompressing %s:" % sane_fn(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
+
+if __name__ == "__main__":
+  main(sys.argv[1:])