Изменение размера изображений с помощью bash в Automator и сохранение соотношения изображений
Я пытаюсь написать приложение Automator, которое будет принимать файлы изображений и изменять их размер до указанной ширины, но поддерживать соотношение высоты и ширины исходного файла изображений.
Я пытался использовать глотки в Bash, но я не уверен, где я иду не так. Я не могу найти что-либо в Google, чтобы ссылаться на BASH или глотками.
Я пытаюсь измерить высоту и ширину переданного изображения, определить соотношение, а затем изменить размер изображения, используя целевую ширину и целевую высоту (рассчитывается по целевой ширине и соотношению)
Это мой текущий скрипт оболочки, и я передаю изображение как Pass input: as arguments.
height=`sips --getProperty pixelHeight $@`
width=`sips --getProperty pixelWidth $@`
ratio=height/width
targetWidth=262
targetHeight=targetWidth*ratio
sips --resampleHeightWidth targetHeight targetWidth $@
Я даже не уверен, что это правильный способ сделать это, поэтому любые предложения будут полезны.
1 ответ
Ты можешь использовать --resampleWidth
или же -Z
:
sips --resampleWidth 262 "$@" # make smaller or larger so that the width is 262 px
sips -Z 262 "$@" # make smaller or larger so that the longer sides are 262 px
Если вы хотите предотвратить масштабирование небольших изображений, посмотрите этот ответ или используйте ImageMagick. Я думаю, что sips часто делает изображение слишком размытым без дополнительной резкости, но ImageMagick также позволяет выбирать различные фильтры передискретизации:
mogrify -filter lanczos2 -resize '262>' "$@"
mogrify
это версия convert
это изменяет изображения на месте. lanczos2
(2-лепестковый Lanczos) делает изображения чуть менее резкими, чем lanczos
(3-лепестковый Lanczos, который был сделан фильтром по умолчанию для уменьшения масштаба в некоторой точке). 262>
изменяет размеры изображений шире, чем 262 px, так что их ширина составляет 262 px.