透過画像(ARGB)をRGBに変換

 思い立ったのはちょっと毛色の違う「LINE STAMP」を作ろうと思ったから。できることなら登録まで。すご腕のイラストレータが犇めくなかこちらはずぶの素人。おもしろそうなのでチャレンジ Lineのサイトにはどのようなソフトでも作成可能とあり、作品に必要なのは楽しいアイデア (^^♪

 

 今、スタンプの要件を見ていたら審査提出画像は=背景が透過されているpng,apngになっていました(訂正します)。RGBは過去の規定でした。さっそくピクセルの色を簡単にコントロールできるアプリ(PngFun.exe)を使います。

 

 

 小生、スタンプは「RGBのみ」と思いこんでいたので今日はARGB→RGB変換のコードを書いていた。MS標準添付のペイントソフトで保存すれば色のロスがないRGB変換ができるのに、と、軽い気持ちで取り組んだ。しかし・・他の方法では変換の質は画像次第と難しさに直ぐ気付いた。100%同じ色にするにはペイントソフトを使うか、PrtScを使うか、1クリックで変換するならWin32APIのGetR/G/B命令の一択でしょう。 OpenCVはアルファブレンドで苦しんでいそう・・

 

 以前、自分用に作ったColorPickerを思い出した。これはGetR/G/B命令を使っている。これを使えばアルファブレンドされたRGB値が返される。早速そのコードを組込むとコンパイルできない。PngFunはWindowsと相いれないコードだった。そこを何とかしなければと、ハンドル設定等でその命令が動く様にしたものの、結果はR=G=B=255。笑ってしまった(変換ボタンを押すと白画像)。それなら陰でColorPickerを動かそうとコードを見てもさっぱり分からない。思い出せない。コメントもなくザっとコードが打ち込んであるだけ。時間の無駄。

 

 変換前の透過画像に背景色が必要になることもあるでしょう・・そうであれば、ひと手間かかりますが、ペイントによる変換と同じ品質が得られるこんな方法(下記)で変換できます。(1) RGB色の台紙を読込む (2) 透過(αRGB)画像を貼付ける (3) 画像を丸ごと保存ボタンをクリックする・・操作は以上です。但し、透過設定された台紙に貼り付けた場合は正しいRGB値は得られません。

 

※上記1)~3)の操作のプログラム化は必要か?RGB画像が必要な業種を検索したら会社の名前が「RGB」結構ありました。電気工事,ホームページ制作etc. 不要に決まってますね。

 ↓ オペミス(消し方が分からない)

t0men.tokyo

t0men.tokyo

作っても無駄な様です・・