[英]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:\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圖像僅出現白頁。
在上面的布爾總是返回true為什么? 我用兩個差異圖像解決了
本質上,您正在比較兩個TIF文件的字節(與使用Image
的間接作用)。 這可能由於各種原因而失敗:
尺寸 :如果兩個圖像的高度和寬度不完全相同,則字節序列當然也會有所不同,即使它們都是完全白色的。
元數據 :據我所知,TIF格式包含各種元數據。 因此,即使兩個文件具有相同的像素,它們也可能不同。 我建議手動檢查所有像素值(例如Bitmap.GetPixel
)並將它們與白色進行比較( Color.FromArgb(255,255,255,255)
)。
噪音 :您確定空白文件始終是純白色(255,255,255)
嗎? 也許某些隨機像素的值略有不同,例如(255,254,255)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.