是否可以记录压缩图像的压缩大小?(使用 imagemagick)

是否可以记录压缩图像的压缩大小?(使用 imagemagick)

我想获取每个压缩图像的日志,以便仅使用终端查看保存的大小(因为有些图像在压缩后会变大!)。例如:

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

相关内容