38 lines
872 B
Bash
Executable file
38 lines
872 B
Bash
Executable file
#!/bin/zsh -i
|
|
set -e
|
|
|
|
size="1440x1920" # Kobo Forma
|
|
#size="768x1024" # Amazon Kindle Paperwhite
|
|
|
|
vertical_size="$(cut -dx -f2 <<< $size)x$(cut -dx -f1 <<< $size)"
|
|
|
|
infile="$(realpath $1)"
|
|
outfile="$(realpath $2)"
|
|
tmpdir=$(mktemp -d)
|
|
|
|
function cleanup {
|
|
rm -rf "$tmpdir"
|
|
}
|
|
|
|
trap cleanup EXIT INT SIGTERM
|
|
|
|
cd "$tmpdir"
|
|
unzip "$infile"
|
|
renumber 4 **/*.???
|
|
length=$(ls -1 **/*.??? | wc -l)
|
|
position=0
|
|
for image in **/*.???; do
|
|
width=$(identify -format "%W" "$image")
|
|
height=$(identify -format "%H" "$image")
|
|
if (($width > $height)); then
|
|
mogrify -resize "$vertical_size" -rotate 270 "$image"
|
|
else
|
|
mogrify -resize "$size" "$image"
|
|
fi
|
|
position=$(($position + 1))
|
|
echo -ne "$(printf '%3s' $((100 * $position / $length))) % "$(printf "%0*d" "$((72 * $position / $length))" 0 | tr '0' '#')'\r'
|
|
done
|
|
echo
|
|
zip "$outfile" **/*.???
|
|
cd -
|