Существует ли команда Linux для увеличения объема, оптимизируют несколько файлов изображений всего на одном шаге?

У меня есть набор изображений в папке:

images/image1.jpg
images/image2.jpg
...

Эти изображения не оптимизированы для сети.

Просто удивление, если там команда Linux для увеличения объема, оптимизирует те изображения всего на одном шаге?

ОБНОВЛЕНИЕ: Я должен сделать две вещи для каждого изображения:

  1. если ширина изображения выше, чем 900 пкс затем уменьшают ширину до 900 пкс (хранение пропорций)

  2. сохраните файл с более низким качеством, позвольте нам, говорит что 70% оригинала.

0
задан 26 June 2015 в 15:20

2 ответа

Установка ImageMagick:

sudo apt-get install imagemagick

И использование эти convert команда следующим образом:

mkdir new
for file in images/*jpg
do convert -quality 70% -resize '>900x' "$file" new/$(basename "$file")
done
3
ответ дан 1 August 2019 в 09:12

Если Вы имеете много файлов и хотите сделать это быстро, можно также использовать параллельную программу:

sudo apt install imagemagick parallel

И затем следующее:

find . \( -name '*.jp*g' -o -name '*.png' \) -a ! -name '*.min.*' -type f -print0 | \
parallel -0 'convert {} -resize '>900x' -quality '70%' \
    -set filename:newname "%d/%[basename].min.%[extension]" "%[filename:newname]"'

Позволяют нам идти через это:

  • find - ищут файлы
    • . - в текущем каталоге
    • \( -name '*.jp*g' -o -name '*.png' \) - которые являются или png или jpeg (и "jpg" и "jpeg", общие расширения!)
    • -a ! -name '*.min.*' - и файлы пропуска, которые уже минимизированы
    • -type f - и являются фактическими файлами, не, символьные ссылки или странно названные каталоги
    • -print0 - печатают эти файлы, разделенные с пустым байтом (так, чтобы пробелы не повреждали вещи)
  • parallel - чтение от предыдущей команды, и выполните эту команду параллельно для каждого элемента
    • -0 - каждый элемент разделяется с пустым байтом
    • convert {} - звонят, imagemagick "преобразовывают" программу с именем файла, которым заменяют [1 111] <ул.> <литий> resize '>900x' -quality '70%' - изменяют размер изображения к макс. из 900 пкс на оси X и изменяют jpeg качество на 70%. существуют многие другие возможные варианты здесь. <литий> -set filename:newname "%d/%[basename].min.%[extension]" - создают переменную с новым именем файла. См. документы для всех допустимых значений . <ул.> <литий> %d - каталог, что файл находится в <литий> %[basename] - имя файла без любых расширений <литий> %[extension] - первоначальный внутренний абонент файла <литий> "%[filename:newname]" - выходное имя файла, мы настраиваем на предыдущем шаге
0
ответ дан 1 August 2019 в 09:12

Другие вопросы по тегам:

Похожие вопросы: