続き: PNG透過あり画像の白いラインの消し方

こんばんは

前回の白いラインの処理について、無料ソフトでフォトショップと同じレベルの処理ができないか調べました。

前回の記事↓

 

実は10年くらい前に使って毛嫌いしていたGIMPがだいぶ進化していて、インターフェースも使いやすくなり機能もフォトショップに負けていないということで、再度インストールしてみる気になりまして・・・。

試してみました。

もうpaint.netいらない、Photoshopを学ぶのは、操作性に対する知識の統一という意味では必要だけど、専門学校生だとかでもなく、趣味でちょっとした加工や編集をする程度で、月額3000円払ってまでそんな高価なソフト使えないよって人にはGIMPでいいねってなりますね(説明ながっ)。

しかし、ほんと使いやすくなってる!

Blenderといい、無料ソフトも2010年台からホント進化しました。凄いね!

GIMPという名前は読みにくいし嫌いだけど!

f:id:gridrooms:20200408032022p:plain

フォトショップの画面↑

f:id:gridrooms:20200408031950p:plain

最新のGIMP(ギンプ?)の画面↑

完全にPhotoshopを意識したインターフェースになっています。
UIもテーマも色々設定できるので、好みの見た目にもできます。デフォルトで、フォトショップを意識した見た目になってますね。(昔のGIMPはひどかった) 

f:id:gridrooms:20200408035644j:plain

10年くらい前のGIMPwww



 

さて、GIMPをインストールするだけでは、前回からのPNG画像の透過部分の白いラインはうまく消せません。(featherとは違う処理が必要になります。)

画像の境界線を縮めてしまうと画像のサイズや形が変わってしまうし、それだとちょっとちがうんですよね。

白いラインが出たりするのは、透過部分のピクセルの中に背景色(白)のデータが残ってしまっているせいなので、透過の境界線部分の色を、近似値で塗り替えるpaddingという処理が必要になります。

f:id:gridrooms:20200408031416j:plainCreating and Editing Textures for Foliage in Photoshop | Texture, Gaussian blur, Create

 

例えば上の画像の①のように、緑の背景色に、黄色とか黒い画像をぽんっと載せてしまうと、その黄色いたんぽぽの花びらの境界線が透明になるときに緑色の背景の色を残してしまい、それが原因で緑色のラインが出ちゃう。って感じになります。

コレを防ぐためのかんたんなオプションがフォトショップのフリンジ削除機能でした。

実際には、上記の画像のように、ボカシでそれぞれの透過部分に似たような(近似値の)色を出すことで、透過しても色違いにならずにラインが出ないようにします。

 

で、ここまでフォトショップを意識したGIMPならできるはずだと思ったんですね、フリンジ削除機能があるはずだと。

 

ありました。

 

ただし、デフォルトではなくて、プラグインでした。

github.com

このページからプラグインファイル(*.scm形式のファイル)をダウンロードして、GIMPスクリプトフォルダに入れて読み込み直すことで使えるようになります。

スクリプトフォルダは、編集>設定>フォルダ>スクリプトに場所が書いてありますが、ウィンドウズだと大体

C:\Users\ユーザー名\AppData\Roaming\GIMP\2.10

C:\Program Files\GIMP 2\share\gimp\2.0
のどちらかにscriptフォルダというのがあって、その中に.scmファイルを(この場合4つくらい)をほりこみます。

f:id:gridrooms:20200408032903p:plain

 

んで読み込み直すと・・・

f:id:gridrooms:20200408032932p:plain

フィルターメニューの中に「Texture」というカテゴリが追加され、その中にDefringe(デフリンジ、フリンジ削除)の機能が追加されます。

あとはコレをクリックして、デフォルトの設定でいいのでOKを選べば、自動的にPadding処理をして、画像をきれいにしてくれます。それをグリッドルームズにアップロードするだけです!

f:id:gridrooms:20200408033420p:plain

今回の画像ではデフォルトの設定で問題なくきれいになりましたが、調整用のオプションの日本語説明もつけておきます。(GitHubに英語の説明があります。)

  • Width of fringe: This is the width of the transparent fringe border around the opaque image to recolor.透過境界線の周囲のピクセルの色塗り替えの幅
  • Width of edge color to ignore: This causes the fringe to use the color further inside the opaque image,rather than the color right on its border.境界線上のど真ん中の何ピクセル分を無視、非透過の側の何ピクセル目の色を使うか
  • Width of edge border to replace: This causes a border around the inside of the opaque image to be replaced by an opaque version of the reconstructed fringe.境界線内の何ピクセル目までを、再構築後の境界線の非透過ピクセルの色で塗り替えるか
  • Fringe blur amount: This blurs the fringe to smooth out any irregularities.境界線の周辺何ピクセルまでボカシを入れるか
  • Remove fringe: This automatically erases the reconstructed fringe, leaving the original opaque image but with the colors in the transparent areas around the fringe corrected. If you want to see the actual fringe before it is made transparent again, uncheck this setting. The fringe can be manually made transparent by erasing it after the script runs by simply pressing delete.境界線再構築後に、再構築した境界線を削除するが、もとの画像の非透過部分は残し、透過部分のみ再構築後のデータが残る(もとの境界線で、内部は元の画像、外部は再構築後?)。デフォルトでチェックあり、削除前の状態を見たい場合のみチェックを外す、その際、処理後満足したらキーボードのDeleteキーで削除ステップが行われる。

The three settings Width of edge color to ignoreWidth of edge border to replace, and Fringe blur amount can be used in combination to rebuild the border of the opaque image, which can in many cases help correct bad edge lighting. Setting the first two to 1 or 2 and setting a small blur amount will clean up the outer one or two pixels of the edge, but leave the overall shape the same. Play around with these settings to get good results.
Width of edge color to ignoreWidth of edge border to replace、及び Fringe blur amountの3つの設定はコンビネーションで使うことによって再構築後の非透過部分の画像がどれだけスムーズになるか、きれいになるかを調節できる(デフォルトの設定でうまく行かない場合の調節用)。最初の2つのオプション(Width of edge color to ignoreWidth of edge border to replace)を1や2し、ボカシ量を少量に設定することで、画像の大まかな形を残しながら、境界線の外側の1,2ピクセルをよりスムーズにできるかもしれない。
色々試してほしい。

 ということだそうです。

実際にはデフォルト設定のままOKを押せば一発でフォトショップと同様にきれいにしてくれるのでおすすめです。GIMP凄いです。見直しました。

 

結果↓ 

デフォルトのフリンジ削除処理をしない場合。
SVGファイルからPNGに変換しただけのもの)

f:id:gridrooms:20200408034844p:plain

デフリンジ後↓

f:id:gridrooms:20200408035026p:plain

なめらかでスムーズで、変な白いラインもありません。ズームアウトしてもきれいです

 

フリンジ削除前↓

f:id:gridrooms:20200408034948p:plain

 

フリンジ削除後↓

f:id:gridrooms:20200408035134p:plain

なめらかです。他の画像の上に重なる部分でもラインがきれいに消えました

 

以上です。

これでSVGで出した画像もとてもきれいになるということがわかって良かったです。

誰でもプレイできるほど軽くなったし、軽量化に1ヶ月以上かけたかいがありました。

目の前が開ける感じです。

 

んではまた!

らいおんでした!