如何将 BYTE* 转换为 gdi+ 图像对象?
我想将 BYTE* 转换为 gdi+ Image 对象。
我怎样才能做到这一点?
BYTE* 似乎是一个 Dib 点。
我发现 Image 有一个名为 Image::FromStream() 的方法可能会有所帮助, 但我找不到任何有关如何将 BYTE* 转换为 IStream 对象的参考。 我怎样才能做到这一点?
提前致谢!
实际上,很难相信MS提供了IStream接口,但没有提供任何实现该接口的c++ MemoryStream类。
I want to convert a BYTE* into an gdi+ Image object.
How can I do this?
The BYTE* seems a Dib point.
I found Image has a method named Image::FromStream() which may help,
But I can not find any reference about how to convert a BYTE* into a IStream object.
How can I do this?
Thanks in advance!
Actually, it is hard to believe MS provide a IStream interface, but do not provide any c++ MemoryStream class which implements the interface.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
CreateStreamOnHGlobal 将采用 HGLOBAL 并为您提供IStream 指针。 您需要使用 GlobalAlloc 分配足够的内存,然后将 BYTE 数组复制到 HGLOBAL 中。
如果您知道您获得的图像数据是 GDI DIB,则可以使用 GdipCreateBitmapFromGdiDib 或相应的 Bitmap::Bitmap 构造函数。
CreateStreamOnHGlobal will take an HGLOBAL and give you an IStream pointer. You'll need to allocate enough memory with GlobalAlloc, and then copy your BYTE array into the HGLOBAL.
If you know that the image data you've got is a GDI DIB, you can use GdipCreateBitmapFromGdiDib or the corresponding Bitmap::Bitmap constructor.
你知道
BYTE
指针指向的图像数据的格式吗? 为了使 Image 能够从流中构建自身,数据必须采用受支持的标准图像格式之一(GIF、PNG、JPEG 等)。IStream 界面看起来足够简单如果没有合适的“内存流”或类似的,请自行实现。
Do you know the format of the image data the
BYTE
pointer points at? For Image to be able to construct itself from a stream, the data must be in one of the supported standard image formats (GIF, PNG, JPEG etc).The IStream interface looks to be simple enough to implement on your own, if there's no suitable "memory stream" or similiar.
使用
SHCreateMemStream
< /a>,Using
SHCreateMemStream
,