Можно ли записать сжатый размер сжатых изображений? (С изображением)
Я хочу получить журнал каждого сжатого изображения, чтобы увидеть сохраненный размер (потому что есть некоторые изображения, которые после сжатия становятся больше!), Используя только терминал. Пример:
convert photo.jpg -quality 50% photo2.jpg
photo2.jpg | saved size: 100 kb
РЕДАКТИРОВАТЬ 1:
Как я могу реализовать предложение @daemonburrito в коде, который я использовал для сжатия нескольких изображений?
Вот:
for PHOTO in /home/bnnsou/Desktop/images/*
do
BASE=`basename $PHOTO`
convert "$PHOTO" -quality 40% "/home/bnnsou/Desktop/imagesCompressed/$BASE"
done;
1 ответ
Да, но некоторые уточнения вашего вопроса могут быть необходимы. Это очень просто сделать с помощью сценария оболочки; например, с Awk или Perl. Но если ваш вопрос заключается в том, можно ли это сделать без каких-либо других инструментов, то я думаю, что ответ - нет.
Однако сценарий очень легко написать. Вы не перечислили все свои требования, но они могут быть вызваны с теми же аргументами, которые вы передали convert
и он мог бы просто разобрать вывод ls -al
чтобы получить разницу между несжатыми и сжатыми размерами.
Возможно, вы захотите обновить свой вопрос, спросив "Как мне написать сценарий оболочки для…", если я правильно угадала цель вопроса.
ОБНОВЛЕНИЕ Сценарий:
#!/usr/bin/env bash
# script to log before-and-after sizes for imagemagick compression
INPUT_FILENAME="$1"
OUTPUT_FILENAME="$4"
ORIGINAL_SIZE=$(wc -c "${INPUT_FILENAME}" | cut -d ' ' -f1)
convert "$@"
COMPRESSED_SIZE=$(wc -c "${OUTPUT_FILENAME}" | cut -d ' ' -f1)
echo "${OUTPUT_FILENAME} | saved size: $(expr $ORIGINAL_SIZE - $COMPRESSED_SIZE)"
Поместите это в скрипт с именем, например, convert_with_logging
, сделайте его исполняемым с chmod +x convert_with_logging
и вызвать его с теми же аргументами, что и вы convert
; т.е.
./convert_with_logging photo.jpg -quality 50% photo2.jpg