如何将32位BMP转换为包含Alpha通道?[关闭]
题
我有一个带Alpha的PNG图像,我需要将其转换为BMP才能加载到我的OpenGL应用程序中。但是,BMP对于32位只有一个选项,即XRBG,其中的“ X”只是用于填充目的的一个额外字节(4字节对齐)。
问题是如何利用这个“ X”字节来包含alpha通道,以便可以将BMP(32位XRGB)加载到具有透明像素的GL应用程序中?
也许我必须自己制作工具才能进行此转换?我需要的是RGBA,而不是“ XRGB”或“ ARGB”,我是否必须读取XRGB BMP文件并逐像素扫描以转换为RGBA?
如果必须进行转换,哪种方法是VC ++中最好的方法? 有可以制作透明BMP的软件吗?
解决方案
pixelformer表示可以做到这一点。
其他提示
您可以使用 PixelFormer 。
如果在 UpdateLayeredWindow()和 LoadImage()上使用 ULW_ALPHA ,该函数期望BMP文件需要为 32位BGRA (具有预乘Alpha 和自上而下的行顺序),但该功能将无法正确显示位图。
您可以使用PixelFormer将PNG转换为BMP 32位BGRA(步骤2)。
- 打开PixelFormer,然后单击文件>新建:
我曾经需要做同样的事情,并编写了一个小的命令行工具,可以在此处找到
开源软件- ImageMagick 或 Gimp 也可以用于此图像转换。
不隶属于 StackOverflow