blob: 237e3ea760601d9e4bfbbccf77e3bf0f974cffd5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#!/bin/sh
set -e
in="$1"
size="$2"
shift 2
out_dir="."
if [ "$#" -ge 2 ]; then
case "$1" in
-o|--output)
out_dir="$2"
;;
esac
fi
base="$(basename "$in" .svg)"
width="${size%x*}"
height="${size#*x}"
mkdir -p "$out_dir"
tmp_png="$(mktemp "${TMPDIR:-/tmp}/symbolic.XXXXXX.png")"
tmp_alpha="$(mktemp "${TMPDIR:-/tmp}/symbolic-alpha.XXXXXX.png")"
trap 'rm "$tmp_png" "$tmp_alpha"' EXIT
# Render SVG, then encode as black+alpha for symbolic PNGs.
rsvg-convert -w "$width" -h "$height" -o "$tmp_png" "$in"
magick "$tmp_png" -alpha extract "$tmp_alpha"
magick -size "${width}x${height}" xc:black "$tmp_alpha" -compose CopyOpacity -composite \
-type TrueColorAlpha -define png:color-type=6 \
"$out_dir/${base}.symbolic.png"
|