从 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 (将#修改为@)