ソフトウェアを使用してPNGをSVGに変換するにはどうすればよいですか?


29

MarvinSketchを使用して作成されたSVG化学構造を完全にトリミングできるようにしたい(この質問を参照)ため、解決策を考えたかもしれません。MarvinSketchを使用して大きなPNGファイルを作成し、GIMPを使用してトリミングしてからPNGをSVGに変換します。したがって、高品質のPNG-> SVG変換のためにUbuntuにインストールできるフリーソフトウェアを知っている人がいるかどうか知りたいです(私はいつもマルウェアを疑っているのでオンラインコンバータを使用するのは好きではありません)。


1
そのためのコードはどのように見えますか?あなたが言ったように、私の知識からコードを逆にしようとしました(私はコード初心者です)。これは私が使用したコードである`#{INKSCAPE_PATH} -z -f #{Guanidine.png} -w #{width} -j -e #{Guanidine.svg}
BH2017

1
これを実行しcd ~/Documents/Chem Structures/た後、ファイルがあるディレクトリを指定します。
BH2017

1
sudo apt-get install imagemagickその後、このスクリプトを保存します#!/ bin / bash while [$#-gt 0]; do picture = $ 1 png_file = echo "$picture" | sed 's/\.\w*$/.png/' / usr / bin / convert "$ picture" png: "$ png_file"シフトを〜/ .local / share / nautilus / scriptsで実行し、実行可能にすることを忘れないでください。あなたは下のこのスクリプトを保存
zeitue

1
OK、私は私はあなたがすべて私が理解されるように、より良いことを説明する必要があるとしているのでnoobのだ言ったようだったsudo apt-get install imagemagick
BH2017

2
それでも、SVGのようなベクターグラフィックスとPNGのようなピクセルグラフィックスには根本的な違いがあることに注意してください。ベクター情報を失った後、それを復元する(損失のない)方法はありません。したがって、PNGからSVGに「変換」しても、基本的にはSVGベクトルグラフィックファイル内にピクセルグラフィック(base64エンコード)を埋め込むこと以外は何もしません。convertコマンドはさらに悪くなる:それはどのような非常に大きなファイルサイズにリードピクセルグラフィックスの画素毎に円を配置します。したがって、SVGファイルを直接カットしようとします。
soulsource

回答:


24

したがって、ラスタからベクトルグラフィックスへのコンバータ/トレーサを探しています。potraceautotrace両方がUbuntuリポジトリにあります。私がpotrace以前に試したところ、デフォルトのオプションで素晴らしい結果が得られました。私が覚えているように、両方のツールは入力として圧縮形式をサポートせず、ビットマップ画像のみをサポートします

Potraceの例を参照してください

Potrace:ビットマップをベクターグラフィックスに変換するユーティリティ

potraceはビットマップをトレースするためのユーティリティです。つまり、ビットマップをスムーズでスケーラブルな画像に変換します。入力はビットマップ(PBM、PGM、PPM、またはBMP形式)であり、デフォルトの出力はカプセル化されたPostScriptファイル(EPS)です。典型的な用途は、会社や大学のロゴ、手書きのメモなどのスキャンされたデータからEPSファイルを作成することです。結果のイメージは、ビットマップのような「ぎざぎざ」ではなく、滑らかです。その後、任意の解像度でレンダリングできます。

コマンド:

potrace -s inputfile

AutoTrace:ビットマップからベクターグラフィックスへのコンバーター

AutoTraceは、ビットマップをベクターグラフィックスに変換するためのプログラムです。AutoTraceプロジェクトの目的は、CorelTraceやAdobe Streamlineに似た自由に利用可能なアプリケーションの開発です。いくつかの面では、すでに優れています。もともとGIMPのプラグインとして作成されたAutoTraceは、スタンドアロンプ​​ログラムになりました。

コマンド:

autotrace -output-format svg inputfile

参照:

  • man potrace
  • man autotrace

更新


1
私が走ったautotrace -vector svg inputfile(fenfluramine.pngにinputfileに変更した後)と、それが機能しなかった、私はまた、SVGへの出力形式を変更して動作しませんでした。私はそれをインストールしました。
BH2017

1
私が走ったpotrace -s inputfile(入力ファイルが再びfenfluramine.pngされた状態で)、それが私にこのエラーを与えた:potrace: /home/fusion809/Documents/Chem Structures/Fenfluramine.png: file format not recognized Possible input file formats are: pnm (pbm, pgm, ppm), bmp.
BH2017

1
@ BrentonHorne、PNGの代わりにPNMまたはBMPイメージを作成する必要があります。両方のツールは、入力として圧縮形式(PNG、JPEG ...)をサポートせず、ビットマップイメージ(PNM、BMP、...)のみをサポートします。PNG以外をエクスポートできない場合は、最初にBMPに変換してみてください。
user.dz

1
それでは、あなたは私の質問に答えませんでした。MarvinSketchはBMPにエクスポートできますが、その背景は透明ではないため、そもそもPNG形式を推奨しました。PNMを実行できません。
BH2017

2
ああ、うまくいきました。ありがとう。BMPは透明ではないので、結果もそうではないと思いました。
BH2017

19

Inkscapeには素晴らしい自動追跡ツールがあります。

  1. を使用してInkscapeをインストールする sudo apt-get install inkscape
  2. 画像をインポートする
  3. 画像を選択してください
  4. メニューバーから Path -> Trace Bitmap Item
  5. 必要に応じてトレースパラメーターを調整します

詳細については、トレースチュートリアルを参照してください。

トレースオプションに慣れたら。InkscapeのCLIを使用して自動化できます


5
+1、ありがとう。Inkscapeにはpotrace、言及されているリファレンスに記載されているように、GUIに機能が統合されていると聞いて嬉しいです。
user.dz

5
これは正解です。potraceは.pngインポートをサポートしていないため、変換などで透明度などの問題に陥りやすいです。
ブリアンメルリット

1
また、Gimpはpotraceが見逃しているカラー画像をトレースできます。
笑顔

8

convertターミナルで次のコマンドを使用します。

例えば ​​: convert EXAMPLE.png EXAMPLE.svg

マンページの情報は次のとおりです。

convert(1) - Linux man page

Name

convert - convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

Synopsis

convert [input-options] input-file [output-options] output-file


3
これにより、ベクター画像に変換する代わりに、SVGにラスター画像が埋め込まれます。
bk138

1
どうもありがとう...これはまさに私が探していたものです...
ダンオルテガ

2

私は今、gimpを使用して驚くべき結果を得ました。私は最初にpotraceを使用しましたが、得られたのは多くの歪みのあるすべて黒の画像でした。たぶん私はそれを適切に使用しなかったかもしれませんが、私がgimpを "eps"(file_name.eps)としてエクスポートしようとすると、すべて完了しました。私がしなければならないのは、解像度を300の値に設定して確認することだけです。それだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.