我正在使用SDL的IMG_Load()函数加载一个PNG文件,无论是在Linux上还是在Mac OS X上。它可以工作,但奇怪的是,在Linux上我获得了一个24 BitsPerPixel和OS X的格式32 bpp。
SDL_Surface *image = IMG_Load("path/to/image.png");
std::cerr << (int)image->format->BitsPerPixel << std::endl;
两个系统上的图像文件完全相同。
$ file data/test_scenario.png
data/test_scenario.png: PNG image data, 640 x 400, 8-bit/color RGB, non-interlaced
我认为从文件输出判断24bpp是正确的。
知道为什么会这样,我怎么能绕过这个?
答案 0 :(得分:1)
image
是一个新的表面,并且不保证与原始.png
具有相同的bpp。
如果您只需要打印.png
我猜测中的格式信息,则应该可以使用自定义功能或至少使用libpng
轻松访问标题。
如果你需要blit
加载图像,你有两个选择:
image