Beatmaker77
@Beatmaker77
@beatmeker77

Автоматический кроп фото на сайте?

Есть фото товара на белом фоне. Пропорции фото всегда одинаковые, но сам товар может занимать разную площадь — некоторые практически вписаны во весь размер, некоторые товары мелкие и не всегда правильно отцентрованы.

Какой примерно порядок действий вижу:
1. Вычислить границы объекта без фона и отрезать фон.
2. Добавить по 40-50px отступов белого цвета по всем краям.
3. Зная ширину и высоту полученного объекта и пропорции итоговой фотографии, определяем по какой стороне вписываем объект в эти пропорции, фон заливаем белым цветом, чтобы на выходе получилась фото одного и того же формата. Ширина/высота будут отличаться, но это не важно. Важны пропорции.

В результате должно получиться что-то вроде:

619684e850ae5601759214.jpeg
Эти фото нужны для импорта на сайт. Нужно или заранее готовить их перед загрузкой, или научить битрикс это делать самостоятельно. Подскажите, пожалуйста, в какую сторону копать, или как правильно поставить задачу программисту, если он ранее такое не делал?
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Фотошоп + экшн в 4 кнопки. Слить всю папку локально и натравить на нее экшн в батч режиме. Средствами серверного ПО имхо это малореально.
Ответ написан
@NubasLol
Использовали для этого этот сервис на проекте, но уже не помню как именно настроивали, может что найдёшь

https://docs.imgproxy.net/object_detection?id=usag...
Ответ написан
Комментировать
@topuserman
На самом деле автоматизировать это дело, ничего сложного нет.

4 цикла пускаете и всё.

Первый цикл пробегается сверху вниз, по горизонтали, до тех пор, пока цвет пикселя белый (если там разные оттенки белого, просто сравниваете его яркость: (r + g +b) / 3).

Как нашли тёмный пиксель, значит определили верхнюю границу.

И тоже самое с 3 других сторон.

Потом кроп по этим координатам.

UPD: 619810a665e62335479115.jpeg

PS: зеленая стрелка случайно вышла)

при кропе, из найденных координатов вычетаете по N пикселей, чтобы фотка не была приклеена к краям.

тут есть много способов оптимизации.

например, чтобы не проходить по каждому пикселю, можете каждый 10 или 50 пикселей, как нашли темный пиксель, двигаетесь в обратном порядке, чтобы найти начало.

UPD2: там в ответах выше предлагают фотошопами и т.д. если жто единоразовая работа, то можно и так.

если контент менеджер постоянно загружает изображения, и т.д. то надо автоматизировать.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы