トップページ > 記事閲覧
CheckPixelAlphaSoftImageなどについて
名前:たろう 日時: 2017/11/14 02:03

すみません。たろうです また質問させて下さい 「透明部分のあるドット絵や透明部分との境界がなだらかな半透明部分有りの絵」 のキャラ切り抜きのためにtransfragをtrueにすると 「透明部分のない画像」を表示する時に黒(0,0,0)部分が勝手に透明になるので この二つの判別をしたいと思います CheckPixelAlphaSoftImage( int SIHandle ) ;を使ってみたのですが 透明部分のないpngとjpg画像で黒(0,0,0)のある画像は2 半透明部分のあるpng画像は3 透明部分があり、半透明部分がないpng画像(※ドット絵など)は2 となりました。 つまり「ドット絵」と「黒有りの透明部分無し」の判別が出来ないのですが ・・・なにか方法はありますでしょうか? もしくは透明部分の適用をアルファ値のみにして 黒などの透明化をoffにする方法はありますでしょうか? よろしくお願いいたしますm(_ _)m
メンテ

Page: 1 |

Re: CheckPixelAlphaSoftImageなどについて ( No.1 )
名前:管理人 日時:2017/11/14 02:13

jpgファイルはアルファチャンネルを持たないので CheckPixelAlphaSoftImage の戻り値は必ず 0 になる筈なのですが、 CheckPixelAlphaSoftImage に渡しているソフトウエアイメージハンドルは LoadSoftImage で読み込んだものではないのでしょうか?
メンテ
Re: CheckPixelAlphaSoftImageなどについて ( No.2 )
名前:たろう 日時:2017/11/14 02:32

以下のような方法で調べました int ソフトイメージ = LoadSoftImage(パス) ; 数値=CheckPixelAlphaSoftImage(ソフトイメージ); int 画=CreateGraphFromSoftImage(ソフトイメージ) ; DeleteSoftImage(ソフトイメージ) ; jpgは基本的に1が返って黒があると2になりました ttps://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Kohechi_Susuki_pass.jpg/120px-Kohechi_Susuki_pass.jpg だと黒(0,0,0)がないので1が帰りました 先程おもいついて、 SetTransColor( -1 , 0 , 0 ) ; にして試してみたのですが、一見期待通りの結果が得られました。 ですが、これだと黒以外の別の色が透明になっていたりするのでしょうか? もしくはやり方として危険でしょうか? いつもすみません、よろしくお願いいたします。
メンテ
Re: CheckPixelAlphaSoftImageなどについて ( No.3 )
名前:たろう(解決) 日時:2017/11/14 02:57

すみません、SetUsePremulAlphaConvertLoad( TRUE ) ; にしていたせいでした・・・ 調べる時だけSetUsePremulAlphaConvertLoad( FALSE) ; にすることでjpgでも黒があるpngについても0が戻り 判別ができるようになりました 自力で気づくことが出来ず またまたお手数をおかけしてしまいました ありがとうございましたm(_ _)m
メンテ
Re: CheckPixelAlphaSoftImageなどについて ( No.4 )
名前:管理人(解決) 日時:2017/11/15 01:23

いえ、私も SetUsePremulAlphaConvertLoad が LoadSoftImage にも影響を与えることを 失念していました、すみません 問題が解決して何よりです > 先程おもいついて、 > SetTransColor( -1 , 0 , 0 ) ; > にして試してみたのですが、一見期待通りの結果が得られました。 > ですが、これだと黒以外の別の色が透明になっていたりするのでしょうか? > もしくはやり方として危険でしょうか? SetTransColor( -1 , 0 , 0 ) ; は内部では SetTransColor( 255 , 0 , 0 ) ; として扱われますので、 真っ黒が透過しなくなる代わりに真っ赤が透過するようになります
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存