VC2008读取数据以流式传输GDI+

VC2008 Read data to stream GDI+

本文关键字:传输 GDI+ 读取 数据 VC2008      更新时间:2023-10-16

在磁盘中保存jpeg的代码:

fwrite( dataPosition, 1, BufferSize, hFileImage );

该代码运行良好。但当我尝试将数据读取到流时出现了问题:

HGLOBAL hGlobal = GlobalAlloc(GMEM_FIXED, BufferSize);
CComPtr<IStream> spStream;
HRESULT hr = CreateStreamOnHGlobal(NULL, TRUE, &spStream);
ULONG pcbWritten;//don't understand what it is
spStream->Write(dataPosition, BufferSize, &pcbWritten);
pImage = new Image(spStream, FALSE);

在那之后,流(和pImage)似乎是空的。我不确定我做错了什么?

在写入流后,您可能应该将流IStream::Seek拖到它的开头,这样接下来的Image构造函数就可以读取数据,而不是立即到达流的末尾。

static const ULONGLONG g_nZero = 0;
HRESULT nSeekResult = pStream->Seek(reinterpret_cast<const LARGE_INTEGER&>(g_nZero),
  STREAM_SEEK_SET, NULL);