我需要提取像素信息并填充要在我的 Qt 程序中使用的 QPixmap。
我目前正在分两步执行此操作。
- SDL_Surface 到 Windows .bmp 使用
SDL_SaveBMP()
- .bmp 到 QImage
- QImage 到 QPixmap
我将中间 .bmp 存储在内存中。但总的来说,我对这种方法并不满意,因为它涉及与 .bmp 相关的文件格式转换开销
有更好的建议吗?
编辑:分享最终的工作代码,来自 jrok 的答案加上尝试像素格式
SDL_Surface *screen = ... /* Whatever surface you want to copy from */
SDL_Surface *surface = SDL_CreateRGBSurface(SDL_SWSURFACE,
screen->w, screen->h,
24, rmask, gmask, bmask, amask);
SDL_BlitSurface(screen,NULL, surface,NULL);
QImage img(static_cast<uchar*>(surface->pixels),
surface->w, surface->h, QImage::Format_RGB888);