update: image compress support size units
This commit is contained in:
@@ -42,8 +42,9 @@ kill every wine process including processes hanging
|
||||
convert animated .webp at $1 (path) to a gif
|
||||
|
||||
### image_compress.sh
|
||||
Usage: `./image_compress.sh <input> <output.jpg> <size in bytes>`
|
||||
Usage: `./image_compress.sh <input> <output.jpg> <target size>`
|
||||
Compress an image until it's below a specified target size. Output format is JPEG, regardless of the input format.
|
||||
The target size can be without unit (default to bytes). Or in B, KB or MB, for bytes, kilo bytes and mega bytes (not case sensitive).
|
||||
(requires ImageMagick)
|
||||
|
||||
### convert_md_to_pdf.sh
|
||||
|
||||
+28
-3
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user