[Nautilus Script]Compresion de Imagen

d
Nautilus script: Compress image
Descripción:  Reduce la calidad de imagen de archivos.
Autor: soleilpqd[at]gmail[dot]com
Licencia: GNU GPL

INSTALACION 

Copiar en la carpeta

~/.gnome2/nautilus-scripts

Dar permisos de ejecucion y listo!

#!/bin/bash


function doCompress() {
 if [ $overwritable -eq 1 ] && [ ! -e "_compressed" ]; then
  mkdir "_compressed"
  if [ ! $? -eq 0 ]; then
   zenity --error --title="Compress image" --text="Can not create destination folder"
   exit 1
  fi
 fi
 failedCount=0
 tmp=$IFS
 IFS=$'\n'
 for f in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
  s=$( identify -format "%m" "$f" )
  if [ "$s" == "JPEG" ]; then
   if [ $overwritable -eq 1 ]; then
    dest="_compressed/$( basename "$f" )"
   else
    dest=$f
   fi
   echo "Proccessing $f"
   convert "$f" -quality $ratio "$dest"
   if [ ! $? -eq 0 ]; then
    let failedCount++
   fi
  else
   let failedCount++
  fi
 done
 IFS=$tmp
 if [ $failedCount -eq 0 ]; then
  zenity --info --title="Compress image" --text="All files was compressed successfully"
 else
  zenity --warning --title="Compress image" --text="There were $failedCount files failed"
 fi
}

# checking input file & get 1 file to preview simple
imgAvailable=0
tmp=$IFS
IFS=$'\n'
for f in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
 s=$( identify -format "%m" "$f" )
 if [ "$s" == "JPEG" ]; then
  imgAvailable=1
  previewFile=$f
  break
 fi
done
IFS=$tmp

if [ $imgAvailable -eq 0 ]; then
 zenity --error --title="Compress images" --text="Please select JPEG file(s)"
 exit 1
fi

zenity --question --title="Compress images" --text="Overwrite the original file?"
overwritable=$?
zenity --question --title="Compress images" --text="Preview?"
previewable=$?
stopable=0
ratio=90
while [ $stopable -eq 0 ]; do
 # Ask for compress ratio
 ratio=$( zenity --scale --title="Compress images ratio" --text="High number make high quality image but big file size" --min-value=1 --max-value=100 --value=$ratio )

 if [ $? -eq 0 ]; then
  if [ $previewable -eq 0 ]; then
   previewedFile=$( echo "/tmp/$( basename "$previewFile" )")
   if [ -e "$previewedFile" ]; then
    rm "$previewedFile"
   fi
   convert "$previewFile" -quality $ratio "$previewedFile" | zenity --progress --title="Making preview..." --auto-close --no-cancel --pulsate
   gvfs-open "$previewedFile"
   zenity --question --title="Agree with ratio $ratio?" --text="Origin: $( du -h "$previewFile" ). Result: $( du -h "$previewedFile" )."
   if [ $? -eq 0 ]; then
    doCompress | zenity --progress --title="Compressing..." --auto-close --no-cancel --pulsate
    stopable=1
   fi
   rm "$previewedFile"
  else
   doCompress | zenity --progress --title="Compressing..." --auto-close --no-cancel --pulsate
   stopable=1
  fi
 else
  stopable=1
 fi
done

0 comentarios: