Advertisement
Guest User

Untitled

a guest
Dec 20th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #!/bin/bash
  2. # Compresion sin perdida de ficheros png and jpeg
  3.  
  4. if [ $# -lt 1 ]; then
  5. echo "Uso: $(basename $0) dirOrigen [dirDestino] "
  6. exit 1
  7. fi
  8.  
  9. PATH=/usr/local/bin:/bin:/usr/bin
  10. JPEGTRAN=$(which jpegtran)
  11. # JPEGTRANOPTS: Para mayor reduccion usar -copy none . Esto elimina la informacion EXIF.
  12. JPEGTRANOPTS="-optimize -copy all"
  13. PNGCRUSH=$(which pngcrush)
  14. # Para mayor compresion de ficheros png usar la opcion -bruteoutput (mucho mas lento)
  15. PNGCRUSHOPTS="-rem alla -reduce"
  16. #PNGCRUSHOPTS="-rem alla -reduce -bruteoutput"
  17.  
  18. PATTERN=".*\(png\|jpeg\|jpg\)$"
  19.  
  20. IMAGEFOLDER="$(readlink -f "$1")"
  21.  
  22. if [ -n "$2" ]; then
  23. if [ ! -d "$2" ] ; then
  24. mkdir -p "$2" || exit 1
  25. fi
  26. DESTFOLDER="$(readlink -f "$2")"
  27. else
  28. DESTFOLDER=""
  29. fi
  30.  
  31. compressPicture() {
  32.  
  33. [ -n "$DESTFOLDER" ] && mkdir -p $( dirname ${1/$IMAGEFOLDER/$DESTFOLDER} )
  34.  
  35. fileType="$(file "$1")"
  36. if echo "$fileType" | grep -q "JPEG" ; then
  37. compressJPEG "$1"
  38. elif echo "$fileType" | grep -q "PNG" $1; then
  39. compressPNG "$1"
  40. fi
  41.  
  42. }
  43.  
  44. compressJPEG() {
  45. if [ -n "$DESTFOLDER" ]; then
  46. $JPEGTRAN $JPEGTRANOPTS "$1" > "${1/$IMAGEFOLDER/$DESTFOLDER}"
  47. RC=$?
  48. else
  49. $JPEGTRAN $JPEGTRANOPTS "$1" > "$1".tmp && mv "$1".tmp "$1"
  50. RC=$?
  51. fi
  52. return $RC
  53. }
  54.  
  55. compressPNG() {
  56. if [ -n "$DESTFOLDER" ] ; then
  57. $PNGCRUSH $PNGCRUSHOPTS "$1" "${1/$IMAGEFOLDER/$DESTFOLDER}"
  58. RC=$?
  59. else
  60. $PNGCRUSH $PNGCRUSHOPTS "$1" "$1".tmp && mv "$1".tmp "$1"
  61. RC=$?
  62. fi
  63. return $RC
  64. }
  65.  
  66. # Start
  67. if [ ! -d "$IMAGEFOLDER" ]; then
  68. echo "$IMAGEFOLDER does not exist, exiting"
  69. exit 1
  70. fi
  71.  
  72. find $IMAGEFOLDER -iregex $PATTERN | while read i
  73. do
  74. compressPicture "$i"
  75. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement