问题描述
我有一个程序,它在内存中以每秒和字节的形式不断接收大约 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 (将#修改为@)