C++ Mac和Linux上的SDL IMG_Load()为同一映像返回不同的BitsPerPixel
我使用SDL的IMG_Load()函数在Linux和Mac OS X上加载PNG文件。它可以工作,但奇怪的是,在Linux上,我得到的格式是24位像素,在OS X上是32 bppC++ Mac和Linux上的SDL IMG_Load()为同一映像返回不同的BitsPerPixel,c++,linux,image,macos,sdl,C++,Linux,Image,Macos,Sdl,我使用SDL的IMG_Load()函数在Linux和Mac OS X上加载PNG文件。它可以工作,但奇怪的是,在Linux上,我得到的格式是24位像素,在OS X上是32 bpp SDL_Surface *image = IMG_Load("path/to/image.png"); std::cerr << (int)image->format->BitsPerPixel << std::endl; 从文件输出判断,我认为24bpp是正确的 你知道为什么会发
SDL_Surface *image = IMG_Load("path/to/image.png");
std::cerr << (int)image->format->BitsPerPixel << std::endl;
从文件输出判断,我认为24bpp是正确的
你知道为什么会发生这种情况以及我如何避免这种情况吗?
image
是一个新的曲面,不能保证具有与原始.png
相同的bpp
如果您只需要从.png
打印格式信息,我想应该可以通过自定义函数或至少使用libpng
轻松访问标题
如果需要对加载的图像执行blit
,您有两个选项:
- 支持应用程序中需要的两种bpp格式
- 使用所需的bpp创建新曲面,并在加载后转换
图像
$ file data/test_scenario.png
data/test_scenario.png: PNG image data, 640 x 400, 8-bit/color RGB, non-interlaced