Можно ли вычислить картинку по уникальному признаку в PHP?

Тема в разделе "PHP", создана пользователем verfaa, 25 сен 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    371
    Симпатии:
    41
    На сайте юзеры загружают свои фотки. Проблема в том, что когда они регаются через вконтакте и скрипт парсит фотки из их альбомов на мой сервер - там очень много мусора.
    Подскажите можно ли на 100% вычислить уникальность фотографии средствами PHP? Если да, я бы завел отдельное поле и когда я удаляю фото с сайта, я бы вносил это уникальное значение в это поле БД. В дальнейшем при загрузке юзером фото на сайт я бы проверял загружаемое фото по этому полю и если я уже ранее удалял это фото, то оно автоматически удалялось бы скриптом.
    Только нужен на 100% уникальный признак, т.к. главная задача не повредить нормальные фотографии.
     
  2. astass

    astass Постоялец

    Регистр.:
    6 июл 2011
    Сообщения:
    113
    Симпатии:
    62
    По идее да, у картинок (фоток) есть скрытая тех информация, по идее её можно дергать, но если обнулить с помощью спец программ, то тогда уже нет.
     
  3. Hannibal86

    Hannibal86 Создатель

    Регистр.:
    17 сен 2014
    Сообщения:
    37
    Симпатии:
    17
    нет. из технической информации вам доступна только дата, размер и расширение. Все остальное - только с помощью анализаторов. Но пример - у вас много фото красных машин, а вам надо лишь феррари. как ее уникализировать? - никак. даже уггл это делает используя альты и тайтлы
     
  4. astass

    astass Постоялец

    Регистр.:
    6 июл 2011
    Сообщения:
    113
    Симпатии:
    62
    модель камеры, по, если фото. Если постараться можно дополнительно внести описание, и дергать из списка что нужно. А вообще в техданных около десятка тех параметров, но об этом знают только профи ;-)

    EXIF — стандарт, позволяющий добавлять к изображениям и прочим медиафайлам дополнительную информацию, комментирующую этот файл, описывающий условия и способы его получения, авторство и т. п. Получил широкое распространение в связи с появлением цифровых фотокамер.
     
    Последнее редактирование: 25 сен 2014
  5. Denixxx

    Denixxx

    Регистр.:
    7 фев 2014
    Сообщения:
    247
    Симпатии:
    191
    Наверное проанализировать несколько точек на фото.
    Учтите, что чтобы проанализировать фото, их сначала нужно скачать себе на сайт, а это нагрузка.
    Чем больше точек проанализируешь, тем точнее результат.
    Поэтому если проанализировать ВСЁ фото, все точки, то результат опознавания будет 100%
    Извините — какой вопрос, такой ответ;)
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Для определения уникальности чего-либо использовать хорошо хеш - ru.wikipedia.org/wiki/Хеш Главная сложность в том, как его подобрать ;)
    Уникальность файла вычисляй по md5 хешу функциями md5() или md5_file()
    Уникальность картинки независимо от того как её ужали, а также иногда при лёгком повороте или кропе, вычисляют перцептивным хешем:
    http://habrahabr.ru/post/210388/
    http://habrahabr.ru/post/120562/

    UPD:
    VK обнуляет EXIF, IPTC и другие метаданные

    Смешение даже на несколько пикселов, например добавлением рамки к фото, сделает его уникальным. Анализировать пиксели на php гораздо дольше чем построить md5 хеш. А сделав проверку на смешение, мы получим аналог перцептивного хеша.
    Всё уже придумано до нас! ;)
     
    Последнее редактирование: 25 сен 2014
    Ultharas и Шумадан нравится это.
  7. Hannibal86

    Hannibal86 Создатель

    Регистр.:
    17 сен 2014
    Сообщения:
    37
    Симпатии:
    17
    http://habrahabr.ru/post/143689/ вот еще автору для размышления, но все сводиться к тому что эти методы лишь примерны. Идеального решения нету. Малейшее дополнение фотографии новыми елементами - типа надписи изменит хеш
     
    Ultharas и Шумадан нравится это.
  8. Eav

    Eav Писатель

    Регистр.:
    4 окт 2014
    Сообщения:
    3
    Симпатии:
    1
    как вариант резать картинку на куски, и сравнивать хэши нескольких кусков. Какая-то часть совпадёт...
     
  9. Hannibal86

    Hannibal86 Создатель

    Регистр.:
    17 сен 2014
    Сообщения:
    37
    Симпатии:
    17
    Как сработает ваш вариант, на двух фотографиях?


    wpapers_ru_Яблоко-на-черном-фоне.jpg 1138250_rose_wallp_th.jpg

    левая часть тут совпала на 100%, т.е. это одинаковые картинки, если искать хоть какое-то совпадение. Сама идея хорошая, но надо оценивать количество совпавших кусков, а для этого делить на 20-50 кусков. В плане технической реализации это будет ресурсозатратный процесс.
     
    Eav нравится это.
  10. Eav

    Eav Писатель

    Регистр.:
    4 окт 2014
    Сообщения:
    3
    Симпатии:
    1
    Мне кажется можно подобрать размеры кусков и их расположение, попробовать с полосами вертикальными горизонатльными, а может наоборот совсем мелкие квадратики свравнивать. 3 фигуры будет вполне достаточно, условия рассматривтаь тоже по разному, совпадение 2 или 3 а те что совпали 1 раз брать на ручную модерацию...
     
    Offi нравится это.
Статус темы:
Закрыта.