У меня есть набор изображений в папке:
images/image1.jpg
images/image2.jpg
...
Эти изображения не оптимизированы для сети.
Просто удивление, если там команда Linux для увеличения объема, оптимизирует те изображения всего на одном шаге?
ОБНОВЛЕНИЕ: Я должен сделать две вещи для каждого изображения:
если ширина изображения выше, чем 900 пкс затем уменьшают ширину до 900 пкс (хранение пропорций)
сохраните файл с более низким качеством, позвольте нам, говорит что 70% оригинала.
Установка 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
Если Вы имеете много файлов и хотите сделать это быстро, можно также использовать параллельную программу:
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]"
- выходное имя файла, мы настраиваем на предыдущем шаге литий> ул.>