使用C#和线程在不打开图像的情况下获得Jpg的宽度和高度的最快方法

本文关键字:Jpg 方法 高度 情况下 线程 使用 图像 | 更新日期: 2023-09-27 18:27:55

我使用Shell32来获取Jpg图像的宽度、高度和分辨率。我使用GetDetailsOf来获取这些值。这很好也很快,但在我想使用多线程之后,我仍然可以看到1或8个线程的相同性能。

有没有一种线程安全的方法可以从.Net File对象中获取这些信息?

谢谢,Evert Jan

多亏了Tamás F,我使用了下一个代码,它至少快了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

使用C#和线程在不打开图像的情况下获得Jpg的宽度和高度的最快方法

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

编辑:也许PLinq通过使用多线程来帮助改进循环。