поиск одинаковых картинок на php!

Статус
В этой теме нельзя размещать новые ответы.

DOLARiON

Гуру форума
Регистрация
4 Сен 2006
Сообщения
191
Реакции
65
есть порядка 800 000 картинок.... разных по размерам... постоянно добавляющиеся... нужно удалять одинаковые автоматически по крону :)

PS. десктопные проги - это каешна круто... но мозк рушат запускать в ручную каждый раз... гемор может есть всетаки какие-то решения?

нужно именно php-шное решение...

...может хотябы идеи? :nezn:
 
В голову приходит только такой алгоритм:
# Уменьшать (копии) картинки до одинаковых размеров (небольших), но при этом чётных, например, 8.
# Выбирать все блоки 8x8 с шагом в 1 пиксель а не в 8 и составлять для них контрольную сумму.
# Контрольная сумма каждого блока будет одним элементом.
# А далее эти элементы сравнивать по алгоритму шинглов.

Но, кажется мне, что для 800 000 файлов понадобится не одна ночь.
 
В голову приходит только такой алгоритм:
# Уменьшать (копии) картинки до одинаковых размеров (небольших), но при этом чётных, например, 8.
# Выбирать все блоки 8x8 с шагом в 1 пиксель а не в 8 и составлять для них контрольную сумму.
# Контрольная сумма каждого блока будет одним элементом.
# А далее эти элементы сравнивать по алгоритму шинглов.

Но, кажется мне, что для 800 000 файлов понадобится не одна ночь.
Изврат.
1. Создать для каждого файла хэш (md5 или SHA) и записать в БД.
2. Проверять при добавлении файла его хэш по базе и, соответственно, сохранять или нет.
 
  • Заблокирован
  • #4
1. Создать для каждого файла хэш (md5 или SHA) и записать в БД.
2. Проверять при добавлении файла его хэш по базе и, соответственно, сохранять или нет.
Ну а если изображения будут разные по размерам? Ну то есть одно будет 800х600, а другое 1024х768, но они одинаковые, хеши, как я понимаю, у них разные то будут? Как в таком случае поступать?
 
Если бы да кабы
во рту росли грибы,
это был бы не рот,
а целый огород.
(с) Ганс Х Андерсон.

Это для нас они одинаковые, а для системы - это 2 различных файла.
Тут уж или ручками или учить/придумывать алгоритмы анализа изображений.
Но это всё уже как-то слабо относиться к PHP.
 
Изврат.
1. Создать для каждого файла хэш (md5 или SHA) и записать в БД.
2. Проверять при добавлении файла его хэш по базе и, соответственно, сохранять или нет.
Этот Изврат, подойдёт для общего случая, хотя со скрипом, тк если фото с разным качеством- то хрен. Хэш даст сбой, если картинки отличаются хотя бы на байт.
У меня есть небольшой алгоритм по определению одинаковых картинок. Правда готов он на 50%:ah: Смысл такой:
1) Уменьшить до заданного размера
2) Размыть фото.
3) Применить инструмент уровни с параметрами 123-125.
По такой алгоритм должен сделать одинаковыми картинки, которые были сохранены с разным качеством.
Для достижения лучшего эффекта применить пункты 2 и 3 раза 3.
4) Всё же небольшое расхождение есть. Надо придумать как ввести погрешность и записать в базу. Да и скорость выполнения небольшая.
 
Этот Изврат, подойдёт для общего случая, хотя со скрипом, тк если фото с разным качеством- то хрен. Хэш даст сбой, если картинки отличаются хотя бы на байт.
У меня есть небольшой алгоритм по определению одинаковых картинок. Правда готов он на 50%:ah: Смысл такой:
1) Уменьшить до заданного размера
2) Размыть фото.
3) Применить инструмент уровни с параметрами 123-125.
По такой алгоритм должен сделать одинаковыми картинки, которые были сохранены с разным качеством.
Для достижения лучшего эффекта применить пункты 2 и 3 раза 3.
4) Всё же небольшое расхождение есть. Надо придумать как ввести погрешность и записать в базу. Да и скорость выполнения небольшая.
Я предложил вариант для исключения явных дубликатов и приемлемый по скорости, на исключительность не претендую :D

Анализ изображений на PHP - это скорость равная одно изображение в Х минут.
Проще уж тогда подмонтировать папку и прогнать через десктопный софт.
 
  • Заблокирован
  • #8
Если бы да кабы
во рту росли грибы,
это был бы не рот,
а целый огород.
(с) Ганс Х Андерсон.

Это для нас они одинаковые, а для системы - это 2 различных файла.
Тут уж или ручками или учить/придумывать алгоритмы анализа изображений.
Но это всё уже как-то слабо относиться к PHP.
Ну так ТС говорил именно об этом, как я понимаю, ему нужно находить одинаковые изображения разных размеров. Да и верно выше было сказано, даже если качество изображения чуть будет разное, это уже получатся два разных хэша. Ваш вариант подойдёт для идентичных изображений.
 
Ну так ТС говорил именно об этом, как я понимаю, ему нужно находить одинаковые изображения разных размеров. Да и верно выше было сказано, даже если качество изображения чуть будет разное, это уже получатся два разных хэша. Ваш вариант подойдёт для идентичных изображений.
Читаем пост №7.
 
  • Заблокирован
  • #10
Читаем пост №7.
Не обязательно было флудить, я и без этого после того, как запостил свой пост, увидел его.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху