我想获取每个压缩图像的日志,以便仅使用终端查看保存的大小(因为有些图像在压缩后会变大!)。例如:
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
是的,但可能需要对您的问题进行一些澄清。使用 shell 脚本(例如,使用 Awk 或 Perl)来执行此操作非常简单。但如果您想知道是否可以不使用任何其他工具来完成此操作,那么我认为答案是否定的。
不过,这个脚本很容易编写。您没有列出所有要求,但可以使用与传递给 相同的参数来调用它convert
,它可以简单地解析 的输出ls -al
以获取未压缩和压缩大小之间的差异。
如果我正确猜测了这个问题的意思,你可能希望通过询问“我该如何编写一个 shell 脚本来......”来更新你的问题。
更新脚本:
#!/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