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