2011-01-21 4 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에 알바 채널이 있다고 생각하지 않습니다. 여기에 체크

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

+1

알파를 지원하려면 최소한 8 비트 PNG가 필요합니다. –

+0

어떻게 가능합니까? IrfanView에서 검은 색을 투명하게 설정하려고 시도했는데 효과적이었습니다. –

+0

검은 색을 투명하게 설정 한 후 이미지가 여전히 4 비트인지 의심 스럽습니다. –