md5
- это алгоритм хеширования, поэтому он не сравнивает изображения , но сравнивает данные . Данные, которые вы вводите, могут быть почти чем угодно, например, содержимым файла . Затем он выводит хеш-строку на основе содержимого , которое является необработанными данными файла.
Таким образом, вы не сравниваете изображения при подаче изображения в md5
, а необработанные данные изображения. Алгоритм хеширования ничего не знает об этом, кроме необработанных данных, поэтому jpg и gif (или любой другой формат изображения) одного и того же снимка экрана никогда не будут одинаковыми.
Даже если вы сравните декодированное изображение , оно не будет выдавать тот же хеш, но будет иметь небольшие различия, которые человеческий глаз не может увидеть (в зависимости от степени используемого сжатия). Это может отличаться при сравнении декодированных данных из кодированных изображений без потерь , но я не знаю здесь.
Взгляните на статью в википедии для более подробного объяснения и технических знаний о хэш-функциях.