我怎么知道我的字节数组是否包含空白 .tif 文件

how do i know my byte array containing blank .tif file or not

我有一个应用程序需要检查我的扫描仪是否生成空白的 tif 文件。 在这里我分享我的示例代码

 private void button1_Click(object sender, EventArgs e)
    {
        string path2 = @"F:33.tif";
        string path = @"F:\Document Scanned @ 1-blank.tif";
        System.Drawing.Image img = System.Drawing.Image.FromFile(path);
        byte[] bytes;
        using (MemoryStream ms = new MemoryStream())
        {
            img.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);
            bytes = ms.ToArray();
        }

        System.Drawing.Image img2 = System.Drawing.Image.FromFile(path2);
        byte[] bytes2;

        using (MemoryStream ms3 = new MemoryStream())
        {
            img2.Save(ms3, System.Drawing.Imaging.ImageFormat.Tiff);
            bytes2 = ms3.ToArray();
        }
        bool t = false;
        t = bytes.SequenceEqual(bytes2);
    }

注:空白tif图像意味着白页。

上面的 bool t 总是 returns true 为什么?我使用了两个差异图像 解决了

本质上,您是在比较两个 TIF 文件的字节(间接使用 Image)。这可能会因各种原因而失败:

维度:如果两个图像的高度和宽度不完全相同,那么字节序列当然会不同,即使它们都是全白的。

Metadata:据我所知,TIF格式包含各种元数据。因此,即使两个文件具有相同的像素,它们也可能不同。我建议手动检查所有像素值(例如 Bitmap.GetPixel)并将它们与白色(Color.FromArgb(255,255,255,255))进行比较。

噪音:你确定空白文件总是纯白色的吗(255,255,255)?也许一些随机像素的值略有不同,例如 (255,254,255)...