Variable Television: Difference between revisions

From XPUB & Lens-Based wiki
(Created page with "Example of using Python & lxml.etree to manipulate an SVG file, rendering first as PNG frames via Inkscape, and as a video with ffmpeg. <source lang="python"> import lxml.etree ...")
 
No edit summary
Line 1: Line 1:
Example of using Python & lxml.etree to manipulate an SVG file, rendering first as PNG frames via Inkscape, and as a video with ffmpeg.
Example of using Python & lxml.etree to manipulate an SVG file, rendering first as PNG frames via Inkscape, and as a video with ffmpeg.
[[File:VariableTelevision.svg SVG file]] (uses the font [http://ospublish.constantvzw.org/foundry/crickx/ Crickx])


<source lang="python">
<source lang="python">

Revision as of 18:35, 20 October 2011

Example of using Python & lxml.etree to manipulate an SVG file, rendering first as PNG frames via Inkscape, and as a video with ffmpeg.

File:VariableTelevision.svg SVG file (uses the font Crickx)

import lxml.etree
import random, os

doc = lxml.etree.parse("vtv.svg")
text = doc.find("//*[@id='textblock']")
background = doc.find("//*[@id='background']")

c = 0
for i in range(100):
    if i % 2:
        text.set("transform", "rotate(0)")
    else:
        text.set("transform", "rotate(180 512 670)")
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    style = "fill:#{:02X}{:02X}{:02X};fill-opacity:1;stroke:none".format(r, g, b)
    background.set("style", style)

    svg = lxml.etree.tostring(doc, encoding="utf-8")
    c += 1
    filename = "vtv{:02d}.svg".format(c)
    of = open(filename, "w")
    of.write(svg)
    of.close()

    # Use Inkscape to convert SVG to PNG
    os.system("inkscape -e vtv{0:02d}.png vtv{0:02d}.svg".format(c))