svgzについて

svgzについての調査メモ。
vecterionで書き出し形式にSVGを使っており、将来的にsvgzを使うこともあるだろうということで調査。

扱う:svgzの作り方、表示のしかた
扱わない:svgzの圧縮率、Windowsでどうするか、Webおよびブラウザでどうするか


svgzの作り方

svgzをInkScapeで作る

Save時に"svgz(通常ファイル)"を選ぶ。
InkScapeのメタ情報が失われるが、シンプルな分、あとで開いた時にxmlテキストが読みやすい。
ラスターイメージ(ex. jpg画像)を持ったsvgzを作ると、svgファイルにbase64で持たせる。

svgzの表示

eog(Eye of Gnome)で見られる。
InkScapeも読み込める。

CSS3プロパティ周り("color=rgba()"指定)は、InkScapeがまだ解釈できない。
eogでは表示に反映される。

svgzの解凍圧縮

解凍

$ gzip -d -S .svgz test02.svgz
test02という名前で、svgのXMLテキストファイルが出力される。
svgz拡張子はgzipコマンドの標準ではないので、オプションで拡張子を指定する必要がある。
入力ファイルは削除されるので、残しておきたければ-kオプションを付ける。


圧縮

$ gzip rl_test.svg
$ mv test.svg.gz test.svgz
gzipコマンドで圧縮をかける。
拡張子は後からsvgzに変更する。(これでeogなどで開けるようになる。)
解凍時とおなじく、入力ファイルは削除されるので、残しておきたければ-kオプションを付ける。

svgzに含まれるラスタイメージについて

ラスターイメージをbase64テキストではなくファイルとして持っているsvgzが欲しかったのだが、そういうものは無さそう。
(圧縮ファイルにアーカイブされている.jpgなどに相対URLでアクセスするような。)
(svgzの用途としてよくある)Web上に置いた際に、Webサイト上での相対パスと衝突すると思われる。
よくよく調べて考えてみれば、圧縮にgzip(アーカイバは含まれていないので別途tarなどが必要)を使うという時点で、svgz内にリンク先ファイルを持つことはできないことがわかる。

SVGに関するリソース

https://triple-underscore.github.io/SVG11/index.html#minitoc
https://developer.mozilla.org/ja/docs/Web/SVG
https://dev.w3.org/SVG/profiles/1.1F2/test/svg/

Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換する

 Linuxコマンドライン上でSVGベクタ画像をJPG等へラスタライズ変換することができるが、上手く変換されない場合がある。   以前作った魔法陣イラスト素材をイラスト素材ストックサイトへ登録しようと思い立ち、改めて素材用にラスタライズ変換をかけようとした。   ラスタライズ変換...