使用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
我认为您不会提高GetDetailsOf函数一次调用的性能。当您对多个文件或与其他任务并行执行此函数时,多线程可能会有所帮助。
编辑:也许PLinq通过使用多线程来帮助改进循环。