1

我正在使用 FreeImage C# 包装器成功地将具有透明背景的 24 位 PNG 图像转换为 4 位 PNG 图像。但是,4 位图像的背景变为黑色而不是透明。这是代码。有任何想法吗?

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);

4

2 回答 2

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!

于 2011-01-21T16:12:59.673 回答
1

我不认为 4-bit png 有 Albha 的频道。

在这里检查

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

于 2011-01-21T15:53:47.150 回答