Удалить дубликаты(картинки)

Artem_Paris

Новичок
Есть 400 папок, в каждой из них имеются картинки. В какой-то одна, в какой-то 300. В итоге всего картинок около 7000.
Нужно посредством php удалить одинаковые картинки по содержанию, учитывая, что названия у каждой картинки уникальное. То есть может одна и та же картинка быть дважды загружена и сохранена с разными названиями. Метод сравнения одной картинки с другой найден, но как его использовать с таким количеством картинок, я затрудняюсь сказать.

То есть сравнение происходит таким образом:
Код:
$percent = compare($img1, $img2); // ответом является процент совпадения
При $percent = 100 я просто удаляю одну из картинок.
Думал сделать как ниже в коде, но прогонять 7тыс записей через 7 тыс записей - это 49000000
Код:
$pics = array(...7000записей...);
foreach($pics as $img1)
{
    foreach($pics as $img2)
    {
        $percent = compare($img1, $img2);
        if(percent == 100)
            //удалить одну из картинок
    }
}
Подскажите плиз, как еще можно решить задачу?
 

Вурдалак

Продвинутый новичок
Вообще-то проверок должно быть в 2 раза меньше, коммутативность, все дела.

Если это нужно разово, то забей, ну потратишь сутки-двое, какая разница. Если compare() выполняется долго, то оптимизируй.

Если каждый раз, то нужно что-то типа http://habrahabr.ru/post/120562/
 

флоппик

promotor fidei
Команда форума
Партнер клуба

WMix

герр M:)ller
Партнер клуба
оптимизация ), я об этом никогда не думал, когда такая проблема стояла, я линковал картинки в fs. те дубликаты в базе были всегда.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Если подходить с практической точки зрения, так скорее всего, задача не особо имеет смысл вообще, т.к. дисковое место - самый дешевый ресурс.
 

WMix

герр M:)ller
Партнер клуба
мы говорили о 4 терабайтах половина из которых была занята

на каждый продукт по несколько картинок от нескольких магазинов, количество дубликатов шкалило за 4-7. те понадобилось бы намного больше пространства. специфика.
 
Последнее редактирование:
Сверху