Write SVG files with Python.
Project description
svg_ultralight
The most straightforward way to create SVG files with Python.
Four functions only:
from svg_ultralight import new_svg_root, write_svg, write_png_from_svg, write_png
One convenience:
from svg_ultralight import NSMAP
new_svg_root
x: float,
y: float,
width: float,
height: float,
pad: float = 0
-> etree.Element
Create an svg root element from viewBox style arguments and provide the necessary svg-specific attributes and namespaces. This is your window onto the scene. The arguments are the same you'd use to create a rect
element (plus pad
):
See namespaces
below.
x
: x value in upper-left cornery
: y value in upper-left cornerwidth
: width of viewBoxheight
: height of viewBoxpad
: The one small convenience I've provided. Optionally increase viewBox bypad
in all directions.
namespaces (svg_ultralight.NSMAP)
new_svg_root
will create a root with several available namespaces.
- "dc": "http://purl.org/dc/elements/1.1/",
- "cc": "http://creativecommons.org/ns#",
- "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
- "svg": "http://www.w3.org/2000/svg",
- "xlink": "http://www.w3.org/1999/xlink",
- "sodipodi": "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd",
- "inkscape": "http://www.inkscape.org/namespaces/inkscape",
I have made these available to you as svg_ultralight.NSMAP
write_svg
svg: str,
xml: etree.Element,
stylesheet: Optional[str] = None,
do_link_css: bool = False,
-> str:
Write an xml element as an svg file. This will link or inline your css code and insert the necessary declaration, doctype, and processing instructions.
svg
: path to output file (include extension .svg)param xml
: root node of your svg geometry (created bynew_svg_root
)stylesheet
: optional path to a css stylesheetdo_link_css
: link to stylesheet, else (default) write contents of stylesheet into svg (ignored ifstylesheet
is None)returns
: for convenience, returns svg filename (svg
)effects
: creates svg file atsvg
write_png_from_svg
inkscape_exe: str,
svg: str
png: Optional[str]
-> str
Convert an svg file to a png. Python does not have a library for this. That has an upside, as any library would be one more set of svg implementation idiosyncrasies we'd have to deal with. Inkscape will convert the file. This function provides the necessary command-line arguments.
inkscape_exe
: path to inkscape.exesvg
: path to svg filepng
: optional path to png output (if not given, png name will be inferred fromsvg
:'name.svg'
becomes'name.png'
)return
: png filenameeffects
: creates png file atpng
(or infers png filename fromsvg
)
write_png
inkscape_exe: str,
png: str,
xml: etree.Element,
stylesheet: Optional[str] = None,
Create a png without writing an initial svg to your filesystem. This is not faster (it may be slightly slower), but it may be important when writing many images (animation frames) to your filesystem.
inkscape_exe
: path to inkscape.exepng
: path to output file (include extension .png)param xml
: root node of your svg geometry (created bynew_svg_root
)stylesheet
: optional path to a css stylesheetreturns
: for convenience, returns png filename (png
)effects
: creates png file atpng
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for svg_ultralight-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4f5928c417f6d7cbed1a3429a7d60e958ac24eaadc28c2cffef76576b36647d |
|
MD5 | 26c5a9081e7b544602dc4075191688a0 |
|
BLAKE2b-256 | 4dd4efefdd6014e1b6978023d58a17e2064ebb04282a663a96a0f62b172f5339 |