Skip to content

Instantly share code, notes, and snippets.

@jimevans
Created September 25, 2019 17:18
Show Gist options
  • Save jimevans/f566d6946f05038021fd08d19788f9c5 to your computer and use it in GitHub Desktop.
Save jimevans/f566d6946f05038021fd08d19788f9c5 to your computer and use it in GitHub Desktop.
C++ save base64-encoded image as file
void SaveSnapshot(const std::string& base64_encoded_image) {
std::vector<BYTE> buffer(base64_encoded_image.size());
int len = buffer.size();
::Base64Decode(base64_encoded_image.c_str(),
base64_encoded_image.size(),
&buffer[0],
&len);
HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, len);
LPVOID pImage = ::GlobalLock(hMem);
memcpy(pImage, &buffer[0], len);
IStream* pStream = NULL;
::CreateStreamOnHGlobal(hMem, FALSE, &pStream);
CImage image;
image.Load(pStream);
image.Save(L"testshot.png",
Gdiplus::ImageFormatPNG);
pStream->Release();
GlobalUnlock(hMem);
GlobalFree(hMem);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment