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
|
convert animated .webp at $1 (path) to a gif
|
||||||
|
|
||||||
### image_compress.sh
|
### 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.
|
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)
|
(requires ImageMagick)
|
||||||
|
|
||||||
### convert_md_to_pdf.sh
|
### convert_md_to_pdf.sh
|
||||||
|
|||||||
+28
-3
@@ -2,13 +2,38 @@
|
|||||||
|
|
||||||
input="$1"
|
input="$1"
|
||||||
output="$2"
|
output="$2"
|
||||||
target_size=$3
|
target_size_raw="$3"
|
||||||
|
|
||||||
if [[ -z "$input" || -z "$output" || -z "$target_size" ]]; then
|
if [[ -z "$input" || -z "$output" || -z "$target_size_raw" ]]; then
|
||||||
echo "Usage: $0 input output.jpg <target size in bytes>"
|
echo "Usage: $0 input output.jpg <target size>"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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() {
|
compress_and_get_size() {
|
||||||
local q=$1
|
local q=$1
|
||||||
magick "$work" -strip -interlace Plane -quality "$q" "$output"
|
magick "$work" -strip -interlace Plane -quality "$q" "$output"
|
||||||
|
|||||||
Reference in New Issue
Block a user