update: image compress support size units

This commit is contained in:
Sam Hadow
2026-03-25 15:07:08 +01:00
parent 25ca834aee
commit ba336aaf14
2 changed files with 30 additions and 4 deletions
+28 -3
View File
@@ -2,13 +2,38 @@
input="$1"
output="$2"
target_size=$3
target_size_raw="$3"
if [[ -z "$input" || -z "$output" || -z "$target_size" ]]; then
echo "Usage: $0 input output.jpg <target size in bytes>"
if [[ -z "$input" || -z "$output" || -z "$target_size_raw" ]]; then
echo "Usage: $0 input output.jpg <target size>"
exit 1
fi
parse_size() {
local size="$1"
size=$(echo "$size" | tr '[:lower:]' '[:upper:]' | tr -d ' ')
if [[ "$size" =~ ^([0-9]+(\.[0-9]+)?)(B|KB|MB)?$ ]]; then
value="${BASH_REMATCH[1]}"
unit="${BASH_REMATCH[3]}"
case "$unit" in
""|"B") multiplier=1 ;;
"KB") multiplier=1024 ;;
"MB") multiplier=$((1024 * 1024)) ;;
*) echo "Invalid size unit: $unit"; exit 1 ;;
esac
awk "BEGIN {printf \"%d\", $value * $multiplier}"
else
echo "Invalid size format: $size"
exit 1
fi
}
target_size=$(parse_size "$target_size_raw")
compress_and_get_size() {
local q=$1
magick "$work" -strip -interlace Plane -quality "$q" "$output"