Каковы шансы двух фотографий (больших) с одинаковым количеством байтов? - PullRequest
2 голосов
/ 13 июня 2011

У меня есть приложение, которое берет фотографии продукта и сохраняет их на сервере.Теперь дорого отправлять большие файлы и конвертировать формат и т. Д. Поэтому мне было интересно, как я могу проверить, является ли ранее загруженная фотография такой же или нет?Каковы шансы, что они имеют одинаковое количество байтов, если они имеют одинаковое разрешение?Также, каков наиболее эффективный способ загрузить фотографию через HTTP?Должен ли он быть сжат и т. д. Спасибо

Ответы [ 2 ]

5 голосов
/ 13 июня 2011

Вместо того, чтобы в зависимости от размера байта двух изображений вы могли бы создать MD5-хэши (или другие алгоритмы хеширования) этих изображений и сравнить значения хеш-функции. Хеш-коллизии гораздо, гораздо менее вероятны, чем сравнения размеров изображений.

Вам следует беспокоиться только о сжатии, если изображение может быть значительно сжато. В противном случае вы просто тратите процессор на клиент и сервер.

0 голосов
/ 13 июня 2011

«Тот же размер» является необходимым, но не достаточным условием для получения одинакового изображения. Вы должны действительно посмотреть на содержимое байтов. md5sum - это опция отпечатка пальца для проверки равенства.

Как упомянул Пол Саси, сжатие не сильно поможет, потому что большинство используемых форматов файлов (PNG, JPG и т. Д.) Уже сжаты и оптимизированы для использования как можно меньше памяти.

Существует еще один вариант ограничения размера загрузки: в большинстве случаев клиенты отправляют серверам слишком большие размеры разрешения в форме загрузки изображений (например, они берут файлы прямо со своей цифровой камеры, которые предназначены для печати, а не для онлайн потребление). Это часто заканчивается размером более 2 МБ. Большой оптимизацией было бы изменение размера изображений на стороне клиента (скажем, от 4 МБ до 200 КБ). К сожалению, я забыл название библиотеки (я добавлю его, когда оно снова придет в голову).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...