annotate regenerate-pngs.py @ 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
children c8436f1752d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
2
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
3 import cairo
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
4 import rsvg
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
5 import os
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
6
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7 def svg_to_png(svg_name, png_name, w, h):
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8 """Convert an SVG file to a PNG file."""
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
9 r = rsvg.Handle(svg_name)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
11 scale = max(float(r.props.width) / w, float(r.props.height) / h)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12 scale = 1.0 / scale
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
13
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
14 r.props.dpi_x = r.props.dpi_x / scale
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
15 r.props.dpi_y = r.props.dpi_y / scale
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
16
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
17 cs = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
18 ctx = cairo.Context(cs)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
19 ctx.scale(scale, scale)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
20 r.render_cairo(ctx)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
21 cs.write_to_png(png_name)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
22
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
23 def main(path, width, height):
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
24 for dirpath, dirnames, filenames in os.walk(path):
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
25 for filename in filenames:
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
26 basename, ext = os.path.splitext(filename)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
27 if ext == ".svg":
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
28 svg_name = os.path.join(dirpath, basename + ".svg")
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
29 png_name = os.path.join(dirpath, basename + ".png")
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
30 print "Generating %s at %dx%d..." % (png_name, width, height)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
31 svg_to_png(svg_name, png_name, width, height)
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
32
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
33 if __name__ == "__main__":
53960047c186 Script for generating .png images from .svg.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
34 main("data", 20, 20)