помогите с сравнением изображений

Статус
В этой теме нельзя размещать новые ответы.
Не совсем понимаю при чем тут база? Когда идет заливка вычисляешь md5_file и проверяешь на существование файла, и только потом заносишь в БД(или сфинкс как то оптимизирует INSERT ?), если файл отсутствует. Правда не всегда все файлы лежат в одной куче, но это уже другой вопрос. Ставить сфинкс для простой галереи смысла нет имхо.
Да и по хорошему я на хостере такой фигни не стал бы делать - есть ограничения на выполнение скриптов,
у меня робот запущен локально, сдирает нужное с flickr и добавляет в БД, потом тупо БД и файло перекидываю на хостинг.
во всяком случае эту Для просмотра ссылки Войди или Зарегистрируйся бодягу делал так. Кстати на 500 файлов 2-3 совпадения по размеру получилось.

да, робота могу выложить, только он не документирован
 
Не совсем понимаю при чем тут база? Когда идет заливка вычисляешь md5_file и проверяешь на существование файла, и только потом заносишь в БД(или сфинкс как то оптимизирует INSERT ?), если файл отсутствует. Правда не всегда все файлы лежат в одной куче, но это уже другой вопрос. Ставить сфинкс для простой галереи смысла нет имхо.
Да и по хорошему я на хостере такой фигни не стал бы делать - есть ограничения на выполнение скриптов,
у меня робот запущен локально, сдирает нужное с flickr и добавляет в БД, потом тупо БД и файло перекидываю на хостинг.
во всяком случае эту Для просмотра ссылки Войди или Зарегистрируйся бодягу делал так. Кстати на 500 файлов 2-3 совпадения по размеру получилось.

да, робота могу выложить, только он не документирован

И так по порядку, как ты говоришь "вычисляешь md5_file и проверяешь на существование файла, и только потом заносишь в БД" это получаеться по твоим словам, заливаем, делаешь хэш новой фотографии и проверяем все файлы, если есть такой хэш среди загруженых фотографий, а если их там 15-20к?
Sphinx можно и не использовать, но при его использование будет на много меньше времени на выполнение загрузки, так как он ищит по индексам, и потом уже если не найден даный хэш уже тогда заносим в базу INSERT.

Ставить сфинкс для простой галереи смысла нет имхо. - ну я думаю в просто галерии не будет 10к фотографий.

Совпадения по любому буду фотографий, но одной и той же , а по содержимому, так как разное расширение, качество фотографии.

Можете забить Sphinx это уже для больших галерий нужно будет.
 
Можно конечно делать сравнения фото по их содержанию(цветовым точкам) но это конечно ресурсов будет ооочень много кушать, но за 100% можно сравнивать :)

Алгоритм будет напоминать распознование капчи, всю картинку загоняем в массив x|y точек, при следующей фотки прогоняем каждый массив и считаем кол-во не совпадений, а там уже в процентах от кол-во всего точек, к кол-ву не совпадших вычисляем отличия, получим даже если на фотки что-то небольшое дорисуют уже можно будет посчитать одинаковой :)

Но это исключительно для маленьких галерей! Для загрузки даже 1000 фоток сервер в даун уйдёт наверное :)
 
И так по порядку, как ты говоришь "вычисляешь md5_file и проверяешь на существование файла, и только потом заносишь в БД" это получаеться по твоим словам, заливаем, делаешь хэш новой фотографии и проверяем все файлы, если есть такой хэш среди загруженых фотографий, а если их там 15-20к?
т.е. как я понял производительность file_exist будет низкая в каталоге на 20к файлов?

еще раз повторюсь, названия файлов, т.е. картинок, - есть результат md5, т.е. при загрузке картинки - меняем ее название на результат md5_file и сохраняем. Вопрос только в производительности file_exist.
что-то типо :
Код:
function Upload($file)
{
   $name = md5_file($file);
   if (!file_exist($name)) 
   {
      move_uploaded_file($file, $name); 
      ...//заносим доп инфу о файле, если надо, в БД
   }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху