目前,我们正在确定尺寸,以及图片是否包含颜色,方法是将其转换为Bitmap
并检查height
/ width
,然后检查{{ 1}}用于类型PixelFormat
以检测颜色。
我注意到的是,通过代码,只需要3-5秒来初始化System.Drawing.Imaging.PixelFormat.Format1bppIndexed
(至少对于非常高分辨率的TIF图像):
Bitmap
有没有更快的方法来检查这两件事,直接来自字节数组,所以我可以避免ms = new MemoryStream(fileBytes);
bitmap = new System.Drawing.Bitmap(ms);
类的缓慢或这是大型TIF图像的预期?
答案 0 :(得分:0)
这不是我希望的答案,所以我会保持开放,但我确实想要至少提一个可能的“答案”。我最初的问题是加载Bitmap
的速度很慢。
我偶然发现this MSDN article,它解释了Image.FromStream()
如何重载,让您告诉它不要验证图像数据。默认情况下,该值设置为true
。通过使用这个新的重载,并将validateImageData
设置为false
,这会大大加快速度。
例如:
using (FileStream fs = new FileStream(this.fileInfo.FullName, FileMode.Open, FileAccess.ReadWrite))
{
using (Image photo = Image.FromStream(fs, true, false))
{
// do stuff
}
}
该文章的作者发现他的代码运行速度提高了93倍(!)。