最快的方法来检测A)颜色和B)来自byte []的图像大小

时间:2015-07-21 15:03:19

标签: c# image bitmap

目前,我们正在确定尺寸,以及图片是否包含颜色,方法是将其转换为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图像的预期?

1 个答案:

答案 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倍(!)。