Сравнить две картинки на разных сайтах [требует правки]

248
09 февраля 2018, 17:56

Как сравнить две картинки на разных сайтах? Интересует именно само сравнение. Вся процедура по вытаскиванию картинок и обращение к сайтам не нужно.

Answer 1
using System.Drawing;

Если речь про по пиксельное сравнение, Bm1 Bm2 это ваши картинки.

Bitmap filter1 = new Bitmap(Bm1);
Bitmap filter2 = new Bitmap(Bm2);  
if (filter1.Width != filter2.Width || filter2.Height != filter2.Height)
    return false;
for (int x = 0; x < filter1.Width; x++)
    for (int y = 0; y < filter1.Height; y++)
       if(filter1.GetPixel(x, y) != filter2.GetPixel(x, y))
           return false;
return true;
Answer 2

Вопрос слишком широкий. Но допустим, ваша задача - проверять, скачивали вы уже эту картинку или нет.

В этом случае самый правильный подход - считать контрольную сумму файла и проверять, совпало или нет.

Видели наверное сайт virus total? Там такой же подход: каждый файл имеет уникальный "слепок" и можно быстро определить, про какой файл речь: тот же или другой.

Алгоритм используйте SHA-256, а не MD5: md5 хотя и быстрее, но больше шанс столкнуться с коллизией.

    public static string GetHash(byte[] data)
    {
        var stringBuilderb = new StringBuilder();
        using (var hash = SHA256.Create())
        {
            var result = hash.ComputeHash(data);
            foreach (var b in result)
                stringBuilderb.Append(b.ToString("x2"));
        }
        return stringBuilderb.ToString();
    }
READ ALSO
Не работает сниппет в Visual Studio

Не работает сниппет в Visual Studio

Создал сниппет, импортировал его

211
Особенность цикла foreach

Особенность цикла foreach

Объясните, пожалуйста, как это работает?

230
Создание новой кнопки Button [требует правки]

Создание новой кнопки Button [требует правки]

Как создать кнопку Button, при нажатии на которую форма будет создавать новые экземпляры?

178
Работы с событиями

Работы с событиями

В своей программе, для упрощения кода, создал класс, куда запихнул все однотипные функцииТак вот, в этом классе есть свои объекты, у которых...

175