web-dev-qa-db-ja.com

Matlab:背景を透明にしてFigureを保存

私はプロットを持っていて、背景を透明に設定しています:

set(gcf, 'Color', 'None');
set(gca, 'Color', 'None');

(ビューアから)画像を保存しようとすると、.pngとして保存しますが、背景が白で保存されます。どうすれば透明な背景で保存できますか?

ありがとう

13
Aly

残念ですが、MATLABのデフォルトのsaveasおよびprintコマンドは、透過的なものをうまく処理できません。バックグラウンドで保存してから、imread/imwriteまたはその他のツールを使用して変換する必要があります。

役立つかもしれないいくつかのツールがあります:

私はベクターグラフィックスを好むので、透明度が必要な場合はsvgエクスポートを使用します。実際にビットマップがある場合は、imwrite(bitmapData, 'a.png', 'png', 'transparency', backgroundColor)を使用します。

11
Memming

MATLAB 2014bリリース以降、状況は変更されています。新しく実装されたグラフィックスシステム(いわゆるHG2、Handle Graphicsバージョン2)は、透過性の点ではるかに優れています。

透明度を少なくともSVGに正しく保存するようになりました!

3
Memming

だから私はまだ何かをインストールする必要のないシンプルなものを望んでいました(企業のPCは許可されていません:/)私は偶然に遭遇しました このリンク

あなたがしなければならないすべては次です

1)matlabファイルで、透明な背景でフィギュアをフォーマットするコマンドを追加します

 set(gcf, 'color', 'none');
 set(gca, 'color', 'none');

生成された図をeps形式で保存またはエクスポートします。 (Bspline.epsと言います)

2)メモ帳でBspline.epsを開きます

3)最初の行を見てください。たとえば、%!PS-Adobe-3.0 EPSF-3.0です。最後の3.0はPostscriptレベルを示します。レベル3の場合、文字列rfを検索します。このような1行に表示されます(4つの数字の後にrfが続きます)

0 0 3025 2593 rf %%を使用してその行にコメントを付けます。

(レベル2では、文字列prではなくrfを検索します)

ファイルを保存します。

これで、epsファイルを使用したり、pdfに変換して使用したりできます。とにかく透明な背景になります

追加

私にとっては、%!PS-Adobe-3.0 EPSF-3.0が直後にあったにもかかわらず、reを含む2行と2行でした。しかし、その結果、Figureは透過的になりました。

3
JTIM