我希望能够逐字节比较两个图像。这两个图像都是8位BMP图像,大小恰好为40000字节。第一张图像以字节数组的形式在内存中生成,第二张图像从文件中读取并转换成一个Image对象。
我使用MemoryStream实例进行比较:
问题在于加载的图像内存流
在我的算法中,我需要尽可能快地比较图像,因此我拒绝了创建位图并通过
如何从第二个
我使用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本身的一些信息。因此,第二个流的长度为41078,位置为1278。如果位置是1078,我会理解,但它不是,而且从这个位置开始,剩下的字节数少于40000个。在我的算法中,我需要尽可能快地比较图像,因此我拒绝了创建位图并通过
GetPixel
方法进行比较的想法。我使用MemoryStream.ReadByte
方法进行比较。如何从第二个
Stream
获取“真实”的BMP字节?在这种情况下,是否有办法按字节比较图像?