以前作った @marmooo/imagetracer のフロントエンドアプリとして image2svg を作りました。
image2svg の名前で利用したかったので分離しただけです。
たとえばこんな感じの変換ができます。
生成されるまでどうせ待たないといけないので Worker を使わず実装していますが、使ったほうが良いか微妙なところです。
だいたいのデータで 1秒以内に結果が得られます。
1秒以内に実行できれば他のアプリよりはかなり早いのですが、気持ちよく利用するにはまだまだ高速化が必要です。
とはいえシンプルな高速化はだいたいやりきったので、今後は Wasm 化やマルチスレッド処理を考えたほうが良さそうです。
デフォルトで使いやすいようにオプションは設定していますが、画像サイズに合わせて多少の調整は必要な気がします。
画像サイズが小さくなると lineTolerance/splineTolerance が大きくなったときに穴ができてしまうので、閾値を小さくすると良いです。
といって小さくしすぎると圧縮率が下がるので strokeWidth で調整すると良いというのがだいたいのイメージです。
しかし改めてオプションを弄ってみても、ほとんど出力が変わらないケースが多いです。
それだけ洗練されたとも言えるのですが、なかなか難しい。
0 件のコメント:
コメントを投稿