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.2.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

svg_path_transform-2.0.2-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: svg_path_transform-2.0.2.tar.gz
  • Upload date:
  • Size: 10.1 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.2.tar.gz
Algorithm Hash digest
SHA256 c2e432f9a79f0551c9069e964df0c404136851fec9119dd4ac2a08e4bb3e22d7
MD5 002fca4c9cd39625879f4e016cc9a32e
BLAKE2b-256 98402115ead79510ee78cd7cb86eef90b1c848ff8247e43bb1f5c436bab4ccca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for svg_path_transform-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 283e7856f2731baccecf58d13e947bd8c06408c8e149f46f31980738e56a5f70
MD5 217db1b9116a8fba4e457ef854c8745c
BLAKE2b-256 5e5c07167c46eb10469bf5a7e6913f6ec43d079b9b766f3127429b9384bc3a54

See more details on using hashes here.

Supported by

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