Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 0.92 KB | None | 0 0
  1. # reduce quality of a jpeg file to reach target file size
  2. # by grepper
  3.  
  4. (($# != 2)) && echo \
  5. Usage: $0 [target size in bytes] [in file] && exit 1
  6.  
  7. target_size=$1
  8. infile=$2
  9. q=99
  10. insize=$(identify -format '%b' "$2")
  11.  
  12. spin()
  13. {
  14.     # Print spaces to overwrite previous line
  15.     echo -ne "\r                                                            "
  16.     echo -ne "\r$@ "
  17. }
  18.  
  19. echo $2 is $insize and target_size is $target_size
  20. while ((insize > target_size)); do
  21.     spin "Trying -quality $q"
  22.     tmpname=$(tempfile)
  23.     outname=$(tempfile -s .jpg)
  24.     convert "$infile" -quality $q "$outname"
  25.     if (( $(identify -format '%b' "$outname") <= target_size )); then
  26.         echo
  27.         echo Success using -quality $q !
  28.         echo
  29.         echo Output file is "${infile%.*}-${q}.jpg"
  30.         mv  "$outname" "${infile%.*}-${q}.jpg"
  31.         insize=$target_size
  32.     else
  33.     rm -f "$outname"
  34.     fi
  35.     ((q--))
  36. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement