Возможен ли поиск дубликатов изображений на Symfony?

Попадалась ли вам библиотека/бандл для выполнения такой задачи? Найти похожие изображения по базе при загрузке файла. Вероятно поиск по хэшу или как-то еще?..
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 3
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Ответ написан
Комментировать
2ord
@2ord
Бери библиотеку для получения хеша изображения по алгоритму pHash или подобным (нужно экспериментировать с порогом чувствительностм), как например дал ссылку Алексей Скобкин.
1. Занеси в колонку phash значения хешей всех имеющихся изображений.
2. При загрузке на сервер, получив хеш от изображения, сверяй его по базе наподобие:
SELECT id FROM images WHERE HammingDistance(images.phash, uploaded_phash) < 8
LIMIT 1

Если найдётся хоть 1 результат, то это изображение есть дубликат.

Реализации функции HammingDistance могут быть разными, в зависимости от СУБД.
Ответ написан
Комментировать
@usr58
поиск полных дубликатов.
если не лень разбираться, то тут есть нужное:
https://github.com/akeneo/pim-community-dev/tree/m...
https://github.com/akeneo/pim-community-dev/tree/m...

с каждый файлом, добавляется его хеш $sha1 = sha1_file($rawFile->getPathname());

в репозитории можно искать по хешам:
$newFile = new \SplFileInfo('path\to\file.jpg');
$hash = sha1_file($newFile->getPathname());

$repositoryFileInfo = $this->getContainer()->get('akeneo_file_storage.repository.file_info');
$savedFile = $repositoryFileInfo->findOneBy(['hash' => $hash]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы