[過去ログ] スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
263
(2): デフォルトの名無しさん [sage] 2016/01/31(日) 10:56:19.63 ID:KmNLeza2(1/7) AAS
1.ARGBの24ビットでBITMAPを作り、Aに透明度の値を入れます。
2.GDIで、PNGにセーブします。
3.セーブしたファイルのバイナリを見ると、Aに値が入っています。
4.GDIで、PNGをロードします。
5.GDIのGetPixel、GetAlphaで、Aの透明度の値を取得できます。

PNGでは問題ありませんが、BMPでセーブロードしたとき、
セーブしたBMPファイルのバイナリを見るとAに値が入っているのに、
ロードした後、GetAlphaで、Aの透明度の値を正しく取得できません。Aの値は255になっています。
透明度付きBMPをロードする時に、何か設定が必要だったでしょうか?
透明度付きBMPはロードできないような仕様なのでしょうか?
265
(1): デフォルトの名無しさん [sage] 2016/01/31(日) 11:22:28.41 ID:KmNLeza2(2/7) AAS
>>263
訂正:24ビットではなく32ビットです。

>>264
GDIの関数です。
bmp = new Gdiplus::Bitmap(LoadFile,PixelFormat32bppRGB);
bmp->GetPixel( x, y, &pixelColor );
alpha = pixelColor.GetAlpha();

これで、PNGの場合はalphaが取得できますがBMPでは取得できません。
バイナリで見ると、BMPファイルにはalpha値が入っています。
たとえば0x88でも、GetAlphaで255になります。
268: デフォルトの名無しさん [sage] 2016/01/31(日) 11:56:29.04 ID:KmNLeza2(3/7) AAS
>>266
あ〜!と思いましたが、変わりませんでしたです。
270
(1): デフォルトの名無しさん [sage] 2016/01/31(日) 12:19:29.18 ID:KmNLeza2(4/7) AAS
>>269
32になってます。
272
(1): デフォルトの名無しさん [sage] 2016/01/31(日) 12:40:44.08 ID:KmNLeza2(5/7) AAS
>>271
pixelColor=0x00000000;
bmp->GetPixel( x, y, &pixelColor );
alpha = pixelColor.GetAlpha();
で、alpha は255になります。

PNGロードは問題なくalphaを取得できるんですが。
いま、LockBitsでロードしたデータの中身を見ようとしてるんですが、
素人なので、取得の仕方から調べてるところです。
275: デフォルトの名無しさん [] 2016/01/31(日) 14:31:16.81 ID:KmNLeza2(6/7) AAS
>>237
>>274
RGBは問題ありません。
LockBitsで見たところ、ロードしたデータのalpha値はすでに255でした。
これって、こちらだけの問題でしょうか?
他の方はalpha値をロードできているのでしょうか?
276: デフォルトの名無しさん [sage] 2016/01/31(日) 14:32:33.18 ID:KmNLeza2(7/7) AAS
あれ?sageてるのに、なぜか上がってるし?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s