我想比較兩個圖像逐字節。它們都是8位BMP圖像,大小正好是40000字節。第一個圖像在內存中以字節數組的形式生成,第二個圖像從文件讀入Image對象。比較兩個圖像問題
我使用MemoryStream
實例用於比較:
byte[] generatedImage = new byte[40000];
// some unrelated logic of image generation ...
MemoryStream imageStream1 = new MemoryStream(generatedImage);
// loaded image, 200x200 bmp - 40000 bytes
MemoryStream imageStream2 = new MemoryStream();
Image loadedImage = Image.FromFile("image.bmp");
loadedImage.Save(imageStream2, ImageFormat.Bmp);
的問題是,所加載的圖像imageStream2
的存儲器流含有更 40000字節,據我所知包含有關BMP的一些信息本身也是如此。所以第二個流創建Length
等於41078和Position
等於1278.我會理解,如果Position
是1078,但它不是,並從該位置有少於40000字節剩下。
在我的算法中,我需要儘可能快地比較圖像,所以我拒絕了創建位圖和通過GetPixel
方法進行比較的想法。我使用MemoryStream.ReadByte
方法進行比較。
如何從第二個Stream
獲得「真實」BMP字節?在這種情況下,有什麼方法可以在字節到字節的基礎上比較圖像嗎?
如您對文件進行操作只是比較文件:http://support.microsoft.com/kb/320348 – 2011-06-01 12:29:13
不僅上的文件。我不簡單地比較這些圖像,我試圖找出它們在每個圖像的每個字節上的某些操作有多少不同。 – Centro 2011-06-01 12:35:38