2011-01-21 19 views
0

FreeImage C#ラッパーを使用して、透明な背景を持つ24ビットのPNG画像を4ビットのPNG画像に変換することに成功しました。ただし、4ビット画像の背景は透明ではなく黒になります。ここにコードがあります。何か案は?FreeImageの透明度

FIBITMAP dib = FreeImageAPI.FreeImage.LoadEx( "C:\ title_normal.png"); FreeImage.SetTransparent(dib、true); FreeImage.SaveEx(ref dib、 "C:\ title_normal.png"、FREE_IMAGE_FORMAT.FIF_PNG、FREE_IMAGE_SAVE_FLAGS.PNG_Z_DEFAULT_COMPRESSION、FREE_IMAGE_COLOR_DEPTH.FICD_04_BPP、true);

答えて

2

実は私は考え出しました。誰かが興味を持っている場合のコードは次のとおりです。

  dib = FreeImageAPI.FreeImage.LoadEx("C:\\title_selected.png"); 
      dib = FreeImage.ConvertColorDepth(dib, FREE_IMAGE_COLOR_DEPTH.FICD_04_BPP); 
      byte[] Transparency = new byte[1]; 
      Transparency[0] = 0x00; 
      FreeImage.SetTransparencyTable(dib, Transparency); 
      FreeImage.Save(FREE_IMAGE_FORMAT.FIF_PNG, dib, "C:\\title_selected1.png", FREE_IMAGE_SAVE_FLAGS.DEFAULT); 

結果の画像は4ビット透過PNGです!

1

4ビットのPNGにはAlbhaのチャンネルがあるとは思われません。

ここでチェック

http://en.wikipedia.org/wiki/Portable_Network_Graphics

+1

アルファをサポートするには、少なくとも8ビットのPNGが必要です –

+0

これはどのように可能ですか?私はIrfanViewで黒色を透明に設定しようとしました。 –

+0

透明に黒を設定した後..画像はまだ4ビット私はそれを疑う –