获取Jpg宽度和高度的最快方法,无需使用C#和线程打开图像

时间:2015-12-24 14:01:15

标签: c# multithreading height width jpeg

我正在使用Shell32来获取Jpg图像的宽度,高度和分辨率。 我使用GetDetailsOf来获取这些值。这工作得很好而且速度很快,但在我想使用多线程后,我仍然看到1或8个线程的相同性能。

是否有一种线程安全的方法可以从.Net文件对象中获取此信息?

谢谢,Evert-Jan

感谢TamásF,我使用了下一个代码,速度至少快了4倍:

    public void GetJpegImageSizeAndRes(string filename, out int width, out int height, out float res)
    {
        using (var sr = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            var sz = Image.FromStream(sr, false, false).Size;
            res = Image.FromStream(sr, false, false).HorizontalResolution;
            width= sz.Width;
            height = sz.Height;
        }
    }

谢谢大家,Evert-Jan

1 个答案:

答案 0 :(得分:1)

我认为你不会提高GetDetailsOf函数调用的性能。当您为多个文件执行此函数或与其他任务并行时,多线程可能会有所帮助。

编辑: 也许PLinq有助于通过使用多线程来改善循环。