CImageを使用したいのですから、CImageのドキュメントを確認しましょう。
すると、CImage::Load(),CImage::LoadFromResource()がイメージ読み込みであることがわかります。
CImage::LoadFromResource()はBITMAPリソースからの読み込みなので、もう一方のCImage::Load()
を確認します。
CImage::Load(LPCTSTR pszFileName),CImage::Load(IStream* pStream)の二つがありますが、
CImage::Load(LPCTSTR pszFileName)はファイル読み込みのため除外、
CImage::Load(IStream* pStream)はストリームからの読み込みです。
というわけで、IStreamをメモリ上から生成してやれば読み込めます。
IStreamはGlobalAllocでメモリ確保して得られたハンドルに対してCreateStreamOnHGlobalを呼ぶと生成できます。
(追記)
以下のコードでメモリ上のPNGデータをCImageに読み込めることを確認しました。
エラーチェックは省いています。
C++
1 IStream* pIstream = NULL;
2 //IStream生成
3 CreateStreamOnHGlobal(NULL, TRUE, &pIstream);
4 //PNGデータ書き込み
5 pIstream->Write(PNGデータポインタ, PNGデータサイズ, NULL);
6 //CImageに読み込み
7 CImage image;
8 image.Load(pIstream);
9 //CImageを使用した操作(例としてBMP保存)
10 image.Save(_T("c:\tmp\test.bmp"), Gdiplus::ImageFormatBMP);
11 //IStream解放
12 pIstream->Release();
2019/12/23 12:29
2019/12/23 13:31
2019/12/23 23:41
2019/12/24 04:30
2019/12/24 05:01
2019/12/27 02:32
2019/12/28 16:44