Добавить холст к высоте или ширине в зависимости от размера изображения - PullRequest
0 голосов
/ 30 марта 2020

Задайте следующий вопрос для Imagemagick (или другого решения, как оно работает)

Дело: с Photoshop я обрезаю изображения перед загрузкой в ​​мой интернет-магазин. Продаем для примера брюки. Я автоматически их обрезаю, поэтому пробелы удаляются, и я получаю хорошее изображение только брюк. Проблема в том, что ширина этого изображения может быть ниже 250 пикселей. И Google хочет, чтобы там изображения имели минимальный размер 250x250 для одежды на Google Покупках.

Так что я ищу solutino для следующего:

Поиск изображений в подкаталогах с высоты или ширины ниже затем 250px на моем linux веб-сервере. Добавьте размер холста к высоте или ширине (по центру), чтобы минимальная ширина или высота составляла 250 пикселей.

Какое самое лучшее (и самое быстрое) решение? У меня есть много изображений ..: -)

Спасибо,

HRR

==

Редактировать: Очистить:

  1. Старый размер (пример 1): 180x900 -> Новый размер 250 x 900.
  2. Старый размер (пример 2): 900x240 -> Новый размер: 900 x 250.

Так что я не хочу квадратное изображение размером 250x250. Самая низкая точка должна быть минимальной ширины или высоты, равной 250px

. И я работаю с изображениями с помощью .jpg, а изображения должны быть перезаписаны.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 31 марта 2020

Эта команда, использующая «mogrify» ImageMagick, будет проходить по всем изображениям * .jpg в текущем каталоге и центрировать каждое изображение по белому отступу по мере необходимости, чтобы минимальные размеры составляли 250 пикселей в ширину и высоту. Размеры, превышающие 250 пикселей, остаются без изменений.

mogrify -virtual-pixel white \
   -set option:distort:viewport "%[fx:max(w,250)]x%[fx:max(h,250)]" \
   -distort affine "0,0 %[fx:250>w?(250-w)/2:0],%[fx:250>h?(250-h)/2:0]" *.jpg

При этом необходимые размеры окна просмотра должны быть не менее 250 пикселей в обоих направлениях. Затем, только если изображение тем или иным образом меньше, чем это окно просмотра, оно перемещает изображение вверх или вниз, или оба, чтобы центрировать его в теперь увеличенном окне просмотра. Настройка виртуального пикселя гарантирует, что отступ будет белым.

Он перезапишет входные изображения, поэтому соблюдайте осторожность.

Возможно, вы захотите включить «-quality 100», чтобы минимизировать качество потеря, которая происходит при сохранении в формате JPG.

Я обработал эту команду с IM7 в Windows, но эта команда имеет синтаксис * nix. Я протестировал его с IMv6.8.9 в bash, и, похоже, он работает правильно.

1 голос
/ 31 марта 2020

ImageMagick обычно включает в себя программу «mogrify», которая может изменять размер, центрировать и дополнять изображения в больших объемах. Команда, подобная этой, изменит размер каждого * .png изображения в текущем каталоге, чтобы вместить максимум 250 пикселей по ширине или высоте, добавит к белому 250x250 для заполнения отступов и запишет их в исходные имена файлов.

mogrify -resize 250x250 -background white -gravity center -extent 250x250 *.png

Это перезапишет исходные изображения, поэтому попробуйте запустить его на копии или использовать «-path куда-то» в mogrify, чтобы указать другой каталог для выходных файлов.

0 голосов
/ 30 марта 2020

Лучшее решение:

  1. Создайте кэш изображений, в котором хранятся изображения с динамическим изменением размера.
  2. Свяжите все ваши изображения со скриптом, который проверяет кэш для изображения указанного вами размера, а затем либо доставляет из кэша, либо изменяет размеры-> сохраняет в кэш-> доставляет изображение.

Какой интернет-магазин вы используете, но он этого еще не сделал?

0 голосов
/ 30 марта 2020

В ImageMagick вы можете использовать -extent для дополнения изображения. Предполагая, что вы хотите пэд вокруг (центрированное изображение), тогда

convert image -background somecolor -gravity center -extent 250x250 result

, где somecolor может быть любого цвета, включая «прозрачный». Если вы хотите, чтобы ImageMagick также выполнял обрезку, то

convert image -fuzz XX% -trim +repage -background somecolor -gravity center -extent 250x250 result

, где XX - это какое-то значение в диапазоне от 0 до 100, обычно близкое к нулю, которое позволяет фону немного отличаться от однородный цвет. Это позволяет удалить некоторые отклонения в цвете фона на несколько процентов.

Если у вас есть большие изображения, вы можете изменить их размер.

convert image -fuzz XX% -trim +repage -resize 250x250 -background somecolor -gravity center -extent 250x250 result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...