在C#中解压缩JPEG图像的最快方法是什么?

Joh*_*hnY 5 c# windows performance winforms

我需要编写一个应用程序来播放DICOM多帧图像.每帧都以JPEG格式存储.所有帧都连续存储在一个文件中.现在,我读出每个帧数据并将其传递给以下例程,以构建一个用于显示的位图:

    Bitmap CreateBitmap(byte[] pixelBuffer, int frameSize)
    {
        Bitmap image = null;

        try
        {
            long startTicks = DateTime.Now.Ticks;
            MemoryStream pixelStream = new MemoryStream(pixelBuffer, 0, frameSize);
            image = new Bitmap(pixelStream);
            loadTime = DateTime.Now.Ticks - startTicks;
        }
        catch (Exception ex)
        {
            Log.LogException(ex);
        }

        return image;
    }
Run Code Online (Sandbox Code Playgroud)

在测试期间,除了上述例程中的性能不是最佳之外,一切正常.对于800x600帧大小,此例程所需的时间为0毫秒和15毫秒(我不知道为什么).对于1024x768帧大小,所需时间为15毫秒或31毫秒.我的目标是流式传输图像数据并以60Hz的频率播放图像(1024x768版本)而不丢帧.这表明我必须在15毫秒内不断地解压缩JPEG帧.所以我的问题是更好的方法是什么?

Fra*_*ger 6

它是0毫秒或15毫秒,因为你的计时器缺乏分辨率.使用QueryPerformanceCounter得到准确的时间.

WPF JPEG解码器(System.Windows.Media.Imaging)比GDI +解码器更快.