stas84 2 Опубликовано: 14 января 2020 Рассказать Опубликовано: 14 января 2020 Через доп. поле формата изображение гружу картинки на сервер, но уже не помню какие картинки грузил, а какие нет. Есть ли какое платное или бесплатное решение чтобы, допустим при загрузке фото через доп поле шла проверка по похожести изображения? Подскажите пожалуйста, очень нужно. Готов рассмотреть любой вариант. Цитата Ссылка на сообщение Поделиться на других сайтах
mr. Freeman 11 Опубликовано: 14 января 2020 Рассказать Опубликовано: 14 января 2020 Написать маленькую нейросеть на DLE, отличная идея. Цитата Ссылка на сообщение Поделиться на других сайтах
stas84 2 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 Автор Мне кажется вы усложняете задачу. ImageMagick Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 16 минут назад, stas84 сказал: Мне кажется вы усложняете задачу. ImageMagick Он не усложняет, он бабок хочет. Что ты хочешь от профессионального флудера Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 Есть несколько разных вариантов https://habr.com/ru/company/io/blog/259549/ но все требует именно написания персонального плагина и установки на сервер доп. по. Готового вы вряд ли найдете, такие вещи как правило только на заказ делаются под конкретный проект. Цитата Ссылка на сообщение Поделиться на других сайтах
stas84 2 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 (изменено) Автор <!DOCTYPE html> <?php $im1 = new Imagick('1.jpg'); $im2 = new Imagick('2.jpg'); $res = $im1->compareImages($im2, Imagick::METRIC_MEANSQUAREERROR); $d = round($res[1]*1000); // приводим значение разности к удобному виду echo $d; ?> Я поставил imagick и выполнил этот код, он сравнивает две картинки, похоже работает. Теперь вопрос, кто сможет написать модуль, который будет искать похожие картинки по базе или при добавлении сравнивать каждый раз. При добавлении новой новости я так понимаю сравнение может быть долгим если много картинок, так что возможно лучшее решение что-то типа обслуживания базы. Изменено 15 января 2020 пользователем stas84 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 5 минут назад, stas84 сказал: Теперь вопрос, кто сможет написать модуль, который будет искать похожие картинки по базе или при добавлении сравнивать каждый раз. Картинки не в базе. Это файлы. Перебирать каждый раз все файлы, ваш сервер ляжет как бобик и сдо... Вам не подойдет этот вариант. Я бы вам рекомендовал смотреть в сторону libpuzzle и при загрузке делать подпись сохранять подписи в базе, а потом по базе делать сравнение уже расхождение в подписях. Тоже неплохо по нагрузке получится, но уже лучше. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 1 час назад, celsoft сказал: при загрузке делать подпись сохранять подписи в базе, а потом по базе делать сравнение уже расхождение в подписях. Совершенно верно, а если нет возможности добавить библиотеку, то хранить, например, md5 содержания файла и тогда только полностью одинаковые картинки можно будет отсекать. Цитата Ссылка на сообщение Поделиться на других сайтах
stas84 2 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 (изменено) Автор А нельзя сделать задержку при сканировании всех изображений чтобы не повесить сервер? Если это будет как модуль в админке, то запустил его и всё, ждешь когда он закончит искать похожие картинки. С md5 тоже думал, но не совсем понимаю как оно пойдет, ведь картинки в основном тянуться с интернета и они могут иметь разный md5 например если размер картинки был изменен. Вариант с md5 хорош если имеется своя какая-то постоянная коллекция картинок. Изменено 15 января 2020 пользователем stas84 Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 я делал такой модуль для одного сайта обои на рабочий стол. реализовал через phash https://habr.com/ru/post/120562/ скорость примерно 0.1 - 0.3сек . картинок около 5000 Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 15 января 2020 Рассказать Опубликовано: 15 января 2020 5 часов назад, stas84 сказал: А нельзя сделать задержку при сканировании всех изображений чтобы не повесить сервер? Можно сделать все, но сканирование каждый раз всех картинок это бесполезная трата процессорного времени и ресурса накопителя. Цитата Ссылка на сообщение Поделиться на других сайтах
mr. Freeman 11 Опубликовано: 16 января 2020 Рассказать Опубликовано: 16 января 2020 20 часов назад, alex32 сказал: Он не усложняет, он бабок хочет. Что ты хочешь от профессионального флудера Не преувеличивайте всё таки, главный флудераст форума тут явно вы. 19 часов назад, celsoft сказал: Есть несколько разных вариантов https://habr.com/ru/company/io/blog/259549/ но все требует именно написания персонального плагина и установки на сервер доп. по. Готового вы вряд ли найдете, такие вещи как правило только на заказ делаются под конкретный проект. Ещё это потребует глубокой переделки структуры хранения изображений в DLE (для тех же хэшей), что в будущем будет вызывать много дискомфорта по переписыванию кода под новые версии, в которых наверника будет что то добавлятся и менятся в структуре данных касательно изображений. Из коробки пора бы уже сделать хранение изображений на стораджах + проверку дубликатов и не хранить одно и тоже по 1*N раз. 19 часов назад, stas84 сказал: <!DOCTYPE html> <?php $im1 = new Imagick('1.jpg'); $im2 = new Imagick('2.jpg'); $res = $im1->compareImages($im2, Imagick::METRIC_MEANSQUAREERROR); $d = round($res[1]*1000); // приводим значение разности к удобному виду echo $d; ?> Я поставил imagick и выполнил этот код, он сравнивает две картинки, похоже работает. Теперь вопрос, кто сможет написать модуль, который будет искать похожие картинки по базе или при добавлении сравнивать каждый раз. При добавлении новой новости я так понимаю сравнение может быть долгим если много картинок, так что возможно лучшее решение что-то типа обслуживания базы. Вы уверены что вам подойдёт автоматический анализ? Как правило он вам может и подпоритить вполне нормальные изображения, которые похожи, но не то же самое. Лучше уж делать ставку на полные дубликаты, это и в реализации проще. 17 часов назад, MSK сказал: Совершенно верно, а если нет возможности добавить библиотеку, то хранить, например, md5 содержания файла и тогда только полностью одинаковые картинки можно будет отсекать. Но не md5, а что то более уникальное, что бы уменьшить вероятность коллизий. 17 часов назад, stas84 сказал: А нельзя сделать задержку при сканировании всех изображений чтобы не повесить сервер? Если это будет как модуль в админке, то запустил его и всё, ждешь когда он закончит искать похожие картинки. С md5 тоже думал, но не совсем понимаю как оно пойдет, ведь картинки в основном тянуться с интернета и они могут иметь разный md5 например если размер картинки был изменен. Вариант с md5 хорош если имеется своя какая-то постоянная коллекция картинок. В архитектуре DLE вам так и так будет сложно это сделать, т.к. у DLE изображения в самих новостях привязываются по путям к изображениями, а не по условному ID записи в БД, что заставит вас во первых менять логику загрузчика, во вторых добавлять те же хэши в _images, и уже при загрузке проходиться по таблице _images в поисках дубликата, но это всё равно не решает проблему, когда изображение будет удалятся из первой новости, но при этом используясь в других новостях, для обхода этого уже по сути нужно садится и городить ещё большие костыли, или переписывать всю систему хранения изображений, что впринципе представляется сомнительной затеей. 12 часов назад, MSK сказал: Можно сделать все, но сканирование каждый раз всех картинок это бесполезная трата процессорного времени и ресурса накопителя. Можно перефразировать, при объёмах изображений не равных десяткам и сотням террабайтов, это вообще сомнительная затея. Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 16 января 2020 Рассказать Опубликовано: 16 января 2020 25 минут назад, mr. Freeman сказал: Не преувеличивайте всё таки, главный флудераст форума тут явно вы. Да нет дружок, по флуды ты явно рекорд побил. На форуме всего ничего, а нафлудил уже на пару лет вперед Цитата Ссылка на сообщение Поделиться на других сайтах
mr. Freeman 11 Опубликовано: 16 января 2020 Рассказать Опубликовано: 16 января 2020 19 минут назад, alex32 сказал: Да нет дружок, по флуды ты явно рекорд побил. На форуме всего ничего, а нафлудил уже на пару лет вперед Вот тут можно посмотреть ваш бесполезный флуд: https://forum.dle-news.ru/profile/71164-alex32/content/?type=forums_topic_post&change_section=1 Чуть ли не большая часть бесполезный копипаст или ещё чего, так что уже можете успокоить свою пятую точку, тем более что по мимо флуда были и оскорбления, и мат, и чего только не было. Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 16 января 2020 Рассказать Опубликовано: 16 января 2020 1 минуту назад, mr. Freeman сказал: Чуть ли не большая часть бесполезный копипаст или ещё чего, так что уже можете успокоить свою пятую точку, тем более что по мимо флуда были и оскорбления, и мат, и чего только не было Обтекай :) Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 16 января 2020 Рассказать Опубликовано: 16 января 2020 8 часов назад, mr. Freeman сказал: Ещё это потребует глубокой переделки структуры хранения изображений в DLE (для тех же хэшей), что в будущем будет вызывать много дискомфорта по переписыванию кода под новые версии, в которых наверника будет что то добавлятся и менятся в структуре данных касательно изображений. Из коробки пора бы уже сделать хранение изображений на стораджах + проверку дубликатов и не хранить одно и тоже по 1*N раз. В принципе не соответствует действительности. Причем здесь хранение информации о картинках в DLE. Для хешей создается отдельная таблица, никак не привязанная к структуре DLE, где хранится хеш и id новости. Все. Не нужно лезть туда куда не следует и нет надобности, а именно в таблицы DLE и в структуру хранения картинок DLE, эта задача этого не требует в принципе. Если писать правильно, то работать будет на любой версии DLE и всегда. В дистрибутиве этого не будет, потому как задача специфическая и требует специфического серверного ПО. Цитата Ссылка на сообщение Поделиться на других сайтах
mr. Freeman 11 Опубликовано: 16 января 2020 Рассказать Опубликовано: 16 января 2020 3 часа назад, celsoft сказал: В принципе не соответствует действительности. Причем здесь хранение информации о картинках в DLE. Для хешей создается отдельная таблица, никак не привязанная к структуре DLE, где хранится хеш и id новости. Все. Не нужно лезть туда куда не следует и нет надобности, а именно в таблицы DLE и в структуру хранения картинок DLE, эта задача этого не требует в принципе. Если писать правильно, то работать будет на любой версии DLE и всегда. В дистрибутиве этого не будет, потому как задача специфическая и требует специфического серверного ПО. Что нам даст хеш и id новости без привязки к конкретному изображению? Не забываем о том что нам нужно не только собрать базу хешей, но и знать какой хеш какому изображению принадлежит. И заодно чистить хеши нужно при удалении изображений, а это уже не подпадает под "не нужно лезть туда куда не следует и нет надобности" и лезть нужно будет во многие места кода. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 17 января 2020 Рассказать Опубликовано: 17 января 2020 19 часов назад, mr. Freeman сказал: Что нам даст хеш и id новости без привязки к конкретному изображению? Не забываем о том что нам нужно не только собрать базу хешей, но и знать какой хеш какому изображению принадлежит. И заодно чистить хеши нужно при удалении изображений, а это уже не подпадает под "не нужно лезть туда куда не следует и нет надобности" и лезть нужно будет во многие места кода. Использовать имя картинки в этой же таблице где и хеш и id религия не позволяет? Зачем лезть в структуру DLE? Высасываете проблему там где ее нет, либо не видите в голове полной картины построения структуры модуля. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.