微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 jpeg 数据创建位图

如何解决从 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 举报,一经查实,本站将立刻删除。