changeset 18:53960047c186

Script for generating .png images from .svg.
author Simon Cross <hodgestar@gmail.com>
date Sun, 30 Aug 2009 17:26:05 +0000
parents cbbc5da7708a
children d31e03e4121a
files regenerate-pngs.py
diffstat 1 files changed, 34 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/regenerate-pngs.py	Sun Aug 30 17:26:05 2009 +0000
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+
+import cairo
+import rsvg
+import os
+
+def svg_to_png(svg_name, png_name, w, h):
+    """Convert an SVG file to a PNG file."""
+    r = rsvg.Handle(svg_name)
+
+    scale = max(float(r.props.width) / w, float(r.props.height) / h)
+    scale = 1.0 / scale
+
+    r.props.dpi_x = r.props.dpi_x / scale
+    r.props.dpi_y = r.props.dpi_y / scale
+
+    cs = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
+    ctx = cairo.Context(cs)
+    ctx.scale(scale, scale)
+    r.render_cairo(ctx)
+    cs.write_to_png(png_name)
+
+def main(path, width, height):
+    for dirpath, dirnames, filenames in os.walk(path):
+        for filename in filenames:
+            basename, ext = os.path.splitext(filename)
+            if ext == ".svg":
+                svg_name = os.path.join(dirpath, basename + ".svg")
+                png_name = os.path.join(dirpath, basename + ".png")
+                print "Generating %s at %dx%d..." % (png_name, width, height)
+                svg_to_png(svg_name, png_name, width, height)
+
+if __name__ == "__main__":
+    main("data", 20, 20)