changeset 97:65ce115fd21d

Merge.
author Edho Prima Arief <edho@myconan.net>
date Thu, 14 Jul 2011 00:51:44 +0700
parents a5324d2cc0eb (diff) 26c9dc482051 (current diff)
children 9be628347dce
files
diffstat 1 files changed, 40 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/recompress	Thu Jul 14 00:51:44 2011 +0700
@@ -0,0 +1,40 @@
+#!/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
+