Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # reduce quality of a jpeg file to reach target file size
- # by grepper
- (($# != 2)) && echo \
- Usage: $0 [target size in bytes] [in file] && exit 1
- target_size=$1
- infile=$2
- q=99
- insize=$(identify -format '%b' "$2")
- spin()
- {
- # Print spaces to overwrite previous line
- echo -ne "\r "
- echo -ne "\r$@ "
- }
- echo $2 is $insize and target_size is $target_size
- while ((insize > target_size)); do
- spin "Trying -quality $q"
- tmpname=$(tempfile)
- outname=$(tempfile -s .jpg)
- convert "$infile" -quality $q "$outname"
- if (( $(identify -format '%b' "$outname") <= target_size )); then
- echo
- echo Success using -quality $q !
- echo
- echo Output file is "${infile%.*}-${q}.jpg"
- mv "$outname" "${infile%.*}-${q}.jpg"
- insize=$target_size
- else
- rm -f "$outname"
- fi
- ((q--))
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement