Как я могу масштабировать все изображения в папке до одинаковой ширины?

97

Я хочу масштабировать все изображения в данной папке до одинаковой ширины (но разной высоты соответственно). Как я могу сделать это, используя графический интерфейс или инструмент командной строки?

Для бонусных баллов можно ли ограничить, какие изображения масштабируются на основе их первоначальной ширины (то есть только масштабные изображения, которые имеют ширину> x и / или ширину <y)?

david.libremone
источник
avconv может сделать это через интерфейс командной строки - см .: libav.org/avconv.html#scale-1
Elder Geek

Ответы:

152

Это очень легко сделать с помощью imagemagick . Вы должны быть в состоянии установить его в Центре программного обеспечения. Я бы предложил это для пакетной обработки изображений.

Изменение размера пакета невероятно просто (я тестировал его с Ubuntu 11.10). Используйте следующую команду для изменения размера каждого файла .jpg до ширины 200 пикселей, сохраняя соотношение сторон:

$ convert '*.jpg[200x]' resized%03d.png

Вы можете сохранить имя файла, используя опцию -set. Пример:

convert "images/*.jpg[250x]" -set filename:base "%[base]" "images/new_folder/%[filename:base].jpg"

Если у вас есть больше файлов, вы должны использовать с find

find /folder -iname '*.JPG' -exec convert \{} -verbose -set filename:base "%[base]" -resize 1920x1080\> "/folder/images/%[filename:base].JPG" \;

Это только царапает поверхность могущества imagemagick. Изменение размера можно настраивать бесконечно . Для более сложного изменения размера вы должны использовать -resizeопцию.

Вы можете ограничить изменение размера до уменьшения :

$ convert '*.jpg[300x>]' thumb-300-%03d.png

или увеличение :

$ convert '*.jpg[300x<]' thumb-300-%03d.png

Посмотрите документацию по геометрии, чтобы увидеть больше вариантов.

банди
источник
1
Почему JPG в PNG?
JohnyTex
3
Расширения .jpg и .png являются лишь примером, демонстрирующим использование различных форматов.
Bandi
Для получения дополнительной информации о параметре -set: imagemagick.org/script/command-line-options.php ; в основном, -set <property-name> <value>устанавливает свойство; %<one-character>и %[<one-or-more-characters>]расширены Imagemagick до их значения; Свойства, которые используются для программного определения выходного имени файла, должны начинаться с него filename:, поэтому нам нужно скопировать baseсвойство, содержащее путь к изображению, в filename:<something>свойство.
Marcotama
1
Спасибо, что поделились этим трюком, я не знал!
Marcotama
2
неизвестное свойство изображения "% [base]"
сообщение Self
32

Для графического интерфейса Phatch «один клик стоит тысячи фотографий» - лучший вариант для такой быстрой работы. Это уже в хранилище Ubuntu.

sudo apt-get install phatch
  1. Добавить масштаб и сохранить элемент
  2. Установить масштаб / изменить размер
  3. Установить параметры сохранения / вывода
  4. Бегать
  5. Установить входную папку
  6. Нажмите пакет, чтобы выполнить

введите описание изображения здесь введите описание изображения здесь

user.dz
источник
2
Для upvote, пример, как на самом деле выполнить задачу в вопросе было бы неплохо :) Но спасибо за совет, хороший инструмент!
jaywink
2
Это не сработало на моей машине (Ubuntu Mate 16.04). Приложение застряло на экране запуска
Gunith D
1
@GunithDevasurendra, попробуйте из командной строки проверить наличие ошибок. Если вы не можете решить эту проблему, пожалуйста, напишите другой вопрос и включите этот вывод.
user.dz
1
Отличный инструмент, я использовал его годами. К сожалению, он не поддерживается и не работает в текущих версиях Ubuntu. Надеюсь, что кто-нибудь может раскошелиться, чтобы исправить это.
Диего V
На Fedora это не то же самое, что и выше, и не имеет такой функциональности
Влад
29

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

sudo apt-get install gimp-plugin-registry

Затем откройте Gimp и откройте пакетный плагин, найденный в Filters > Batch > Batch Process.

Выберите ваши изображения на Inputвкладке и определите операцию изменения размера на Resizeвкладке с удивительным именем .

Более подробную информацию можно найти здесь .

SirCharlo
источник
21

Попробуйте mogrifyкоманду из инструментов ImageMagick.

  • дать путь, чтобы отделить вывод от оригиналов
  • укажите желаемую ширину миниатюры или высоту ниже примера ширины
  • Таким образом, вы сохраните оригинальное имя файла :-)

Пример:

$ mogrify -path small/ -auto-orient -thumbnail 300x *.jpg
miguelfg
источник
1
Это лучший ответ на мой взгляд!
Том
2
$ mogrify -path small / -resize 300x * .jpg
Юрий Малай,
+1, и вы можете изменить размер самой длинной стороны, будь то портретное или альбомное изображение: stackoverflow.com/a/5694903/227926
therobyouknow
9

Вот как я это сделал, сжимая только большие изображения :

find . -iname \*.jpg -exec convert -verbose -quality 80 -resize 1600\> "{}" "FOO_FOLDER/{}" \;

Он будет соответствующим образом масштабироваться по высоте.

Чтобы использовать convertкоманду, вам нужно установить Imagemagick через sudo apt-get install imagemagick.

Для Windows см .: Пакетный скрипт для изменения размера изображений .

kenorb
источник
8

Ответил и принял (и я использую ImageMagick), но для полноты ... У меня нетехнический начальник, который хотел простого зрителя с некоторыми базовыми инструментами, и это должен был быть графический интерфейс. Я выбрал gThumb для него.

В режиме просмотра миниатюр вы ...

  • Выберите любые изображения, которые вы хотите изменить
  • Запустите функцию изменения размера (нажмите значок гаечного ключа> Изменить размер изображения ..)
  • Введите новый размер на основе пикселей или процента
  • Выберите выходную папку, и вы идете.
Деннис
источник
Для изменения размера это достойная альтернатива Phatch до 16.04.
Хастиг Зусамменстеллен
3

Для пакетного изменения размера изображения я просмотрел множество пакетов и, наконец, нашел один с удобным интерфейсом - наоборот . Как только вы обнаружите, что важные настройки несколько скрыты на левой панели с прокруткой, все в порядке.
Не уверен, что это соответствует всем вариантам использования OP, но вам, возможно, не придется смотреть на причудливый пользовательский интерфейс imagemagick или phatch.
Как ни странно, пакеты управления фотографиями, такие как digikam, f-spot, fotoxx или shotwell, похоже, не осознают необходимость копирования / изменения размера пакетов изображений перед их загрузкой в ​​онлайн-сервисы, такие как photobucket или (gag) flickr. Эти службы хотят, чтобы мы делали все по- своему, поэтому я не доверяю им в резервном копировании оригиналов.

Майк
источник