如何解决从 jpeg 数据创建位图
我有一个程序,它在内存中以每秒和字节的形式不断接收大约 60 个 jpeg
文件,我希望使用 d2d
来简单地根据内存中的 jpeg
数据创建位图,然后将其渲染到屏幕上。
最有效的方法是什么?我测试了 CreateDecoderFromStream
,并创建了一个转换器将其转换为 d2d
兼容的位图,所有这些结合起来似乎是我的应用程序中的主要瓶颈。 c#
中使用 winforms
的这个简单代码在转换 d2d
时以某种方式胜过 jpegs
:
using (MemoryStream stream = new MemoryStream(bytes,len))
{
// stream is created for every single stream,and it just wraps bytes,which is an array of bytes.
// Literally just calls gdiploadimagefromstream found here: https://docs.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-bitmap-flat
Bitmap bitmap = new Bitmap(stream);
}
看来我可以像@Simon Mourier 建议的那样使用 IWICImagingFactory::CreateBitmapFromMemory
,但这似乎需要原始字节。 我的数据采用 jpeg
格式。
编辑:
我做了一些更具体的基准测试,我 100% 确信 ID2D1Hwndrendertarget::CreateBitmapFromWicBitmap
是我 99% 的性能问题的原因。有没有办法解决这个问题?
有没有更有效的方法?或者我应该改用 libjpeg-turbo
之类的东西,然后从中创建一个原始位图?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。