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 ) ; として扱われますので、
真っ黒が透過しなくなる代わりに真っ赤が透過するようになります
|