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



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

 private void button1_Click(object sender, EventArgs e)
    {
        string path2 = @"F:3333.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 图像表示白页。

在上面的布尔值中,t 总是返回 true 为什么? 我使用了两个差异图像解决了

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

尺寸:如果两个图像的高度和宽度不完全相同,则字节序列当然会有所不同,即使两者都是完全白色的。

元数据

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

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

最新更新