使用C#和线程在不打开图像的情况下获得Jpg宽度和高度的最快方法
我使用Shell32获得Jpg图像的宽度、高度和分辨率。 我使用GetDetailsSof获取这些值。这很好,速度也很快,但在我想使用多线程之后,我仍然看到1或8个线程的性能相同 是否有线程安全的方法从.Net文件对象中获取此信息 谢谢,埃弗特·简 多亏了Tamás F,我使用了下一个代码,速度至少快了4倍:使用C#和线程在不打开图像的情况下获得Jpg宽度和高度的最快方法,c#,multithreading,height,width,jpeg,C#,Multithreading,Height,Width,Jpeg,我使用Shell32获得Jpg图像的宽度、高度和分辨率。 我使用GetDetailsSof获取这些值。这很好,速度也很快,但在我想使用多线程之后,我仍然看到1或8个线程的性能相同 是否有线程安全的方法从.Net文件对象中获取此信息 谢谢,埃弗特·简 多亏了Tamás F,我使用了下一个代码,速度至少快了4倍: public void GetJpegImageSizeAndRes(string filename, out int width, out int height, out flo
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函数调用的性能。当您对多个文件执行此函数或与其他任务并行时,多线程可能会有所帮助 编辑:
使用多线程可能有助于改进循环。如果IO是限制,则更多线程将无济于事。也许你应该给我们看一些代码..?这可能会有所帮助:虽然这听起来很有希望,但我想知道为什么我没有看到任何关于不在文档中加载完整图像的内容..?我怀疑他是否真的只想测试一个图像;是什么让你认为???@TaW我确实需要检测超过10000个JPEG的大小