Skip to main content

SVG path data transformation toolkit

Project description

SVG path data transformation toolkit

A tool and a library for SVG path data transformations. Currently it supports a translation and a scaling.

Usage

As a Python library

import svg_path_transform as S
path = S.parse_path("m 2 2 l 2 2")
path = S.translate_and_scale(path, s=(1, 3))
path = S.translate_and_scale(path, t=(3, 4))
path = S.morph(path, lambda p: [p[0] * 2, p[1] * 2])
print(S.path_to_string(path, sfig=4))

As a command line tool

svg_path_transform --dx 100 --dy 100 <<< "m 2 2 l 2 2"

Command line parameters

usage: svg_path_transform [-h] [--dx N] [--dy N] [--sx N] [--sy N] [--sfig N] [--ndig N] [--seg N] [--pretty-print] [-v]

SVG path data transformer

options:
  -h, --help      show this help message and exit
  --dx N          translate x by N
  --dy N          translate y by N
  --sx N          scale x by N
  --sy N          scale y by N
  --sfig N        round to N significant figures
  --ndig N        round to N decimal places
  --seg N         convert to straight line segments with a given max distance
  --pretty-print  pretty print the input path and exit
  -v, --version   show program's version number and exit

Hint: a bash function to transform an SVG with a single path inside

function svg_transform() {
    selector='//_:path[1]/@d'
    input=$(</dev/stdin)
    old_path="$(xmlstarlet sel -t -v "$selector" <<< "$input")"
    [[ $? -ne 0 ]] && echo "could not parse SVG" && return 1
    new_path="$(svg_path_transform "$@" <<< "$old_path")"
    [[ $? -ne 0 ]] && echo "could not parse path" && return 1
    xmlstarlet ed -u "$selector" -v "$new_path" <<< "$input"
    [[ $? -ne 0 ]] && echo "could not update SVG" && return 1
    return 0
}

svg_transform --sx 2 --sy 2 < intput.svg > output.svg

Installation

pip install svg_path_transform

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

svg_path_transform-2.0.1.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

svg_path_transform-2.0.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file svg_path_transform-2.0.1.tar.gz.

File metadata

  • Download URL: svg_path_transform-2.0.1.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for svg_path_transform-2.0.1.tar.gz
Algorithm Hash digest
SHA256 a00942a2a773ab240804e50c3afea4067037ba66635d7c72eaecaceb1028db68
MD5 413c3c17b18f2d61b08d0e8f1a64f323
BLAKE2b-256 d02d47330753df9acfec7c896b030bbab3f211180e7493ce60046243e6430388

See more details on using hashes here.

File details

Details for the file svg_path_transform-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for svg_path_transform-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f372d233a02bb1db4940af3c797e697ba0077e08250749c0c41a5f7d49c8e6ae
MD5 1dfce9a2695a68a1a9786ea1277d724a
BLAKE2b-256 d8a2d7934074196a8b59097fa7cdd95ef22bec2eaacf71f3390f98c8f7d25dc4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page