LINUX.ORG.RU

Resize картинок разного размера и соотношения сторон.

 ,


0

1

Доброго дня. Имеется задача изменить размер нескольких сотен тысяч изображений. Да не просто изменить а сделать это так что бы изображение не получилось меньше установленного предельного размера. Пример: pic1 WxH=400x300px pic2 WXH=300x300px Нужно уменьшить до 40x30px

С первым нет проблем, но второе имеет другое соотношение сторон. Поэтому второе должно быть уменьшено таким образом что бы ни одна из сторон не стала меньше установленного предела (40x30px) соответственно второе изображение должно уменьшиться до 40x40px. Исходные изображения могут иметь разные размеры, ориентацию и соотношение сторон.

Собственно вопрос: чем это можно сделать? Особенно хочется отметить консольность такой аппки т.к. большое кол-во файликов GUI'овый софт не вытянет...

P.S. В основном интересует софтина для ресайза с описанным условием, остальное можно заскриптовать. Файлы: jpg|png

Ответ на: комментарий от Zubok

mogrify (тоже из ImageMagick) возможно будет удобнее, т. к. она изменяет исходный файл, а для convert надо указывать еще и куда сохранить результат.

NeOlip ★★
()
Ответ на: комментарий от anarquista

'^' flag - как раз то что нужно, но возникла проблема.

При сжатии 400x300 до 40x30, все нормально: на выходе 40x30.

При сжатии 300x400 до 40x30, отрабатывает не совсем так как надо: на выходе 40x53. Т.е. нужно что бы сравнение шло не в лоб: X_исходного с X_нужного и Y_исходного с Y_нужного, а по любой из сторон. Пример: 300x400 сжать до 40x30, на выходе должно бы получиться: 30x40.

Как бы это реализовать? ImageMagic сильно забит кучей опций на данный момент все не распарсил еще.

luminary
() автор топика
Ответ на: комментарий от Zubok

Спасибо, но руки не дошли пока не увидел сообщение про mogrify...

luminary
() автор топика
Ответ на: комментарий от luminary

Хм, думаю, что тогда нужно самому сравнивать ширину и высоту, и в зависимости от этого запускать mogrify с тем или иным параметром, ширину и высоту можно узнать с помощью identify из того же пакета ImageMagic:

identify -format '%w %h\n'

anarquista ★★★★★
()
Ответ на: комментарий от luminary

Пример: 300x400 сжать до 40x30, на выходе должно бы получиться: 30x40.

а если 100x600 сжать до 40x30, то тогда сколько?

anonymous
()
Ответ на: комментарий от anonymous

Я уже воспользовался данной страничкой, опоздали.

luminary
() автор топика
Ответ на: комментарий от anonymous

Только я немного не так написал, это уже будет 30x40.

Исходные изображения разной ориентации, и жать их нужно с учетом ориентации.

P.S. Тема закрыта. Накатал тормозящий @вно скрипт, работает но тормозит, и при этом не универсален. Не вижу смысла сюда показывать - стыдно. :D SH плохо знаю...

luminary
() автор топика
Ответ на: комментарий от luminary

40x240 неужели не понятно!?

Я не то посчитал... Верно - 30x180.

luminary
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.