Я получаю изображение в кодировке base64 из cpprestsdk и пытаюсь показать его в окне sdl.
Я не могу создать поверхность из строки base64, но она хорошо работает из файла на диске.
Я пробовал несколько преобразований строки в массивы и векторы символов, но SDL_Surface всегда равен нулю в конце.
Эти две записи направляли меняв направлении SDL_RWops:
SDL_Surface* base64ToSurface(std::string *image)
{
SDL_RWops *rw = SDL_RWFromConstMem(image, sizeof(image));
SDL_Surface *img = SDL_LoadBMP_RW(rw, 1);
if (img == nullptr)
{
logSDLError(std::cout, "base64ToSurface");
}
return img;
}
void convertBase64ToTexture()
{
//base64 image string trimmed for a better readability
std::string aImage = "R0lGODlhPQB...";
SDL_Window *aWindow = SDL_CreateWindow("Lesson 2", 100, 100, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
SDL_Renderer *aRenderer = SDL_CreateRenderer(aWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_Surface *aSurface = base64ToSurface(&aImage);
SDL_Texture *texture = nullptr;
texture = SDL_CreateTextureFromSurface(aRenderer, aSurface);
//Make sure converting went ok too
if (texture == nullptr)
{
logSDLError(std::cout, "CreateTextureFromSurface");
}
}