Nơi đơn giản nhất để bắt đầu sẽ là thứ nguyên. Nếu kích thước không bằng nhau, bạn có thể khai báo chúng sai.
Nếu bạn cần phải trải qua từng pixel, bạn sẽ cần hai cho vòng lặp. Một cái gì đó dọc theo những dòng:
Bitmap ImageA...
Bitmap ImageB...
for (Int64 x = 0; x < ImageA.Width; x++)
{
for (Int64 y = 0; y < ImageA.Height; y++)
{
if (ImageA.GetPixel(x, y) != ImageB.GetPixel(x, y))
{
return false;
}
}
}
Đó là pseudo-code (các chức năng tồn tại trong C#, mặc dù tôi không thể nhớ họ vào lúc này) và rất đơn giản, nhưng là như thế nào bạn muốn thực hiện một điểm ảnh cơ bản kiểm tra điểm ảnh.
Lưu ý, tuy nhiên, để vòng lặp đó hoạt động, hình ảnh phải có cùng kích thước. Nếu không, bạn có thể bị ngoại lệ nếu bạn cố lấy mẫu pixel bên ngoài khu vực nhỏ hơn. Nó cũng sẽ không quá nhanh để so sánh các pixel, vì vậy bạn có thể muốn tìm một cách khác để loại bỏ các bản sao có thể có trước tiên.
Chỉnh sửa: Tôi không chắc chắn cách thực hiện điều này trên Image
, nhưng nó khá đơn giản đối với Bitmap
s. Không có cách hiển thị nào để lấy dữ liệu pixel của lớp ra khỏi lớp. Tuy nhiên, có vẻ như Bitmaps kế thừa từ Hình ảnh, do đó, điều này có thể vẫn hoạt động. Cho rằng Hình ảnh là một lớp trừu tượng cho cả Bitmap và Metafiles, chúng có thể không có danh sách pixel đơn giản bên trong.
Vì vậy, tôi sẽ chỉ đề cập rằng nếu hai hình ảnh là tương đối lớn, đây sẽ là chậm như một con chó. Tôi sẽ sử dụng Lockbits và cũng lặp qua hàng thay vì cột vì đó là cách nó sẽ được sắp xếp trong bộ nhớ. –