Mercurial > rinkhals
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)