2023-06-03 16:00:25 +00:00
|
|
|
#!/usr/bin/env sh
|
|
|
|
set -e # exit on failure
|
|
|
|
IFS=$(printf '\n\t') # smarter ifs
|
|
|
|
|
2023-08-31 02:48:39 +00:00
|
|
|
jxl=0
|
|
|
|
if file "$1" | grep 'JPEG XL'; then
|
|
|
|
jxl="$1"
|
|
|
|
out=$(mktemp --suffix=.jpg)
|
|
|
|
djxl "$1" "$out"
|
|
|
|
shift
|
|
|
|
set -- "$out" "$@"
|
|
|
|
fi
|
|
|
|
|
2023-06-03 16:00:25 +00:00
|
|
|
test "$RATIOW" || RATIOW=16
|
|
|
|
test "$RATIOH" || RATIOH=9
|
|
|
|
imageh=$(identify -format %h "$1")
|
|
|
|
imagew=$(identify -format %w "$1")
|
|
|
|
des_ratio=$(printf '3 k %u %u / p' "$RATIOW" "$RATIOH" | dc)
|
|
|
|
img_ratio=$(printf '3 k %u %u / p' "$imagew" "$imageh" | dc)
|
|
|
|
|
|
|
|
wide="$(echo "$img_ratio > $des_ratio" | bc )"
|
|
|
|
if [ "$wide" -gt 0 ] ; then
|
2023-08-31 02:48:39 +00:00
|
|
|
backup=$(mktemp)
|
|
|
|
mv "$1" "$backup"
|
|
|
|
jpegtran -rotate 90 -outfile "$1" "$backup"
|
2023-06-03 16:00:25 +00:00
|
|
|
imageh=$(identify -format %h "$1")
|
|
|
|
imagew=$(identify -format %w "$1")
|
|
|
|
des_ratio=$(printf '3 k %u %u / p' "$RATIOH" "$RATIOW" | dc)
|
|
|
|
fi
|
|
|
|
|
|
|
|
des_width=$(printf '1 k %f %u * p' "$des_ratio" "$imageh" | dc | cut -d. -f1)
|
|
|
|
offset=$(printf '%u %u - 2 / p' "$des_width" "$imagew" | dc)
|
2023-08-31 02:48:39 +00:00
|
|
|
outfile="$(dirname "$1")/tran_$(basename "$1")"
|
2023-08-14 12:49:00 +00:00
|
|
|
|
2023-08-31 02:48:39 +00:00
|
|
|
test "$REFLECT" && mode=r || mode=f
|
|
|
|
jpegtran -crop "$des_width$mode+$offset" -outfile "$outfile" "$1"
|
2023-06-03 16:00:25 +00:00
|
|
|
|
|
|
|
if [ "$wide" -gt 0 ] ; then
|
2023-08-31 02:48:39 +00:00
|
|
|
mv "$backup" "$1"
|
|
|
|
jpegtran -rotate 270 -outfile "$outfile" "$outfile"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$jxl" != 0 ]; then
|
|
|
|
cjxl -e 8 "$outfile" "tran_$jxl"
|
|
|
|
rm "$outfile" "$1"
|
2023-06-03 16:00:25 +00:00
|
|
|
fi
|