Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mac和Linux上的SDL IMG_Load()为同一映像返回不同的BitsPerPixel_C++_Linux_Image_Macos_Sdl - Fatal编程技术网

C++ Mac和Linux上的SDL IMG_Load()为同一映像返回不同的BitsPerPixel

C++ 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的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是正确的


你知道为什么会发生这种情况以及我如何避免这种情况吗?

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