POTRACEを使ってBitmapからSVG、PDR作成

POTRACEとは?
ビットマップからベクターグラフィックスへの変換をしてくれます。
ポリゴンを基礎としたトレーシングだそうです。白黒画像が対象です。
でも出力結果は、フォント作成者が賞賛するほど、き・れ・い。
理屈を知りたい人は、あのフォントで有名な狩野さんのblogへ
http://khdd.net/cgi-bin/b.cgi/2003/08
AUTOTRACE というのもあるようだけど、こちらのほうがパラメータの設定をしなくても
一発できれいに出力できるようです。

POTRACEは、BMP→SVGができるようなので、SVGの文字列を処理して、
ParaDrawのファイルであるPDRなどを作成できるようにしてみました。

カラーのBMPもできるんでは…と思ってちょっと姑息な手段ですが、
一色ずつ分解して白黒画像を作りPOTRACEに送って、それをまとめて1つのSVGにしています。

なので単にカラーBMPをSVGにする時なんかも何かの役に立つと思います。
potrace本体を同一フォルダに入れれば、DOSを意識しないでbmp→svg
の変換が出来るのでBMP→SVGのフロントエンドにはなると思います。
(単にBMP→SVGが目的の時はこちらがいいかもしれません。)


New
po2pdr  カラー対応BMP→svg→pdrツール
(実行には、POTRACE.EXEが必要です。POTRACE配布サイトよりダウンロードしてください。)

Ver0.4 po2pdr04.lzh("必要時のみ複合パスにする"機能を追加) (12/28(1度修正しました。))

おまけ(写真を変換してみた。)

PDRとは、Coa氏作成のドローソフトParaDrawのファイルです。
PDRに変換した場合、ドーナツ状の図形は、修正の必要があります。
(色の順番は、画像の左から、上から下へ走査して決まります。
サンプルは青が最初に来るため、灰色のドーナツ状を作る時、上から白で塗られてしまっています。)
また大きな図形はディスクへの書き込み量が増え、時間もかかります。
exeの同一フォルダに、po2pdr.svgが出来ます。bmp→svgの結果です。

過去のバージョン
po2pdr03.lzh
po2pdr022.lzh
po2pdr021.lzh
po2pdr02.lzh
po2pdr01.lzh
po2pdrc.lzh(カラー対応初版)

○POTRACE配布サイト
http://potrace.sourceforge.net/

○動作環境:
Windows 95/98/2000/NT/XP/whatever
その他のOS用もあり(というか"Windowsも使える"というのが正しい)
 

○インストール:
potrace-XXX.win32-i386.zipを http://potrace.sourceforge.net/
の「Downloading and Installing」よりダウンロード、解凍する。
 

○一般的な実行方法:
potraceはDOSプログラムなので、MS-DOSのコマンドプロンプトより実行する。
Ex.
c:\potrace>potrace c:\sample.bmp
 

c:\potrace>potrace -s c:\sample.bmp
のように "-s" をつけるとsvgで結果を出力する。
何も指定しない時は、epsで結果が出力される。

または、potrace.exeにbmpをドラッグアンドドロップするとデフォルト値でベクタファイルが出力される。
potrace.exeへのショートカットを作成しリンク先を"C:\potrace.exe" -s などとすると結果がsvgで出力される。
 

以上がPOTRACE単体の使い方です。

ということでこれを利用して、bmp→svg、のラスベク変換、svg→pdrの変換をしてみました。

ホワイト変換者の方が素朴で好きなんだけど、svg→pdrを作りかけて、完全サポートは無理と分かって
無駄なソースができちゃったので、potrace限定のsvg→pdrを作っただけなんです。
bmp→svgはpotraceのフロントエンドのまねごとをしているだけです。
でも、3次ベジェを2次ベジェにしないといけなかったので勉強させてもらいました。
SVGのパラメータ C を Q にするわけです。pdrの形式は、Qに相当。
Cは"Cubic"、Qは"Quadratic"、3次ベジェ、2次ベジェのことです。  

svg→pdrの処理は、potraceで出力されるsvgにきめうちしています。
なので、それ以外は正常な動作をしないかもしれません。
svgの完全サポートって、いろんな方言があって難しいようです。
(EazyFlashのsvgの読み込みも基本的なものしかできない。)
svgサポートのフリードローツールもなんか少ない。...
イラレなんか買うのは無理なので却下です。すいません。
グラデができるフリードローツールってなんとparadrawしかないような...
(inkscapeというのがあるそうです。http://inkscape.org/)
pdr→svgを作ったほうが世の中のためになるんんじゃないかな?
いつものように、ユーザーだよりのツールです。


○potraceの説明
http://www.ito-syoji.co.jp/tips-dtp-trace.html
 


おまけ

写真をベクタにしてみる。
○SVG(見るときはSVGのPlug-inが入っている必要があります。)
○PDR(lzhに圧縮しています。)

手順
1.元画像


2.画像編集ソフトで全体をぼかす(パスの数を少なくする為)


3.減色ソフト(Padieが良いです。)で16色に減色。


4.po2pdrですべての色を変換。