1
픽셀 정보를 추출하고 QP 프로그램에서 사용할 QPixmap을 채워야합니다.SDL_Surface에서 QPixmap으로 효율적으로 변환
현재 2 단계 프로세스에서이 작업을 수행하고 있습니다. QImage
SDL_SaveBMP()
- SDL_Surface는 QImage 내가 메모리에 중간 .BMP를 저장하고
QPixmap합니다. 그러나 전반적으로 .bmp와 관련된 파일 형식 변환 오버 헤드가 관련되어 있기 때문에이 방법이 만족스럽지 않습니다.
더 좋은 제안이 있습니까?
편집 : 제록의 대답에서, 최종 작업 코드를 공유 플러스 QImage
constructors의
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);
감사합니다. 이 방법을 사용하여 작업했지만 약간의 변화가있었습니다. SDI_Surface에 QImage 형식 중 하나를 사용하여 QImage로 변환 할 수없는 픽셀 형식이있는 경우 SDL_Surface를 SDI_CreateRGBSurface()에 의해 생성 된 새 SDL_Surface로 블릿해야합니다. –