Вопрос Уменьшите изображение таким образом, чтобы оно заполнило квадрат 100x100


Я хочу создать эскизы для всех изображений в папке. Я также хочу, чтобы изображения соответствовали квадрату 100x100 пикселей.

Поэтому после масштабирования изображений вниз, в то время как меньшая сторона должна быть 100 пикселей, большая сторона должна быть обрезана, чтобы сделать ее равной 100.

С ImageMagick я попытался:

for i in $(ls *.jpg); do convert -scale 100 $i th-$i; done

Он работает, но для примера изображения 1000x800 уменьшенное изображение имеет размер 100x80 вместо 100x100.


2
2018-01-03 16:59


происхождения




ответы:


Попробуй это:

for i in $(ls *.jpg); do convert -resize 100x100^ -gravity center -crop 100x100+0+0 $i th-$i; done

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


0
2018-01-03 17:41



Спасибо, но это не сработало. Он просто создал несколько изображений, но с их начальными размерами. - user1170330
Какую версию ImageMagick вы используете? Потому как Изменение размера для заполнения заданного пространства также упоминает следующее: «Начиная с IM v6.3.8-3, новый флаг изменения размера« ^ »позволит вам сделать это непосредственно как шаг с одним изменением размера. Эти примеры представляют собой альтернативный метод, который может использоваться для пользователей со старыми версиями ImageMagick. " - usmanayubsh


Может оказаться полезным следующий метод:

for i in *.jpg
do
convert "$i" -resize 100x100 -background white -compose Copy \
-gravity center -extent 100x100 "${i%.jpg}_thumb.jpg"
done

Вы должны изменить цвет фона в соответствии с цветом фона вашего файлового менеджера ...


0
2017-07-09 01:16