[#] Przechowywanie zdjęć - optymalizacja z użyciem ImageMagick

( Ostatnio zmieniony czw., 10/07/2008 - 00:36 )
 

Zdarza się, że wykonując setki zdjęć czy nawet tysiące – powstaje problem z ich przechowywaniem.

Aparaty cyfrowe zapisują fotografie w bardzo mało optymalny sposób, co skutkuje szybkim znikaniem miejsca na dysku twardym naszego komputera. Aby temu zaradzić możemy posłużyć się poniższym skryptem w celu lepszej optymalizacji naszych zdjęć oraz jednocześnie poodwracać je we właściwych kierunkach (ciężko ogląda sie fotki wykonane pionowo)

Aby ułatwić sobie życie ( a lubimy to robić ) wykonamy skrypt, który odwali za nas czarną robotę.

1. Instalacja potrzebnego softu

sudo apt-get install imagemagick jhead

2. Kopiujemy skrypt z załącznika do katalogu ~/.gnome2/nautilus-scripts

3. Uruchomienie skryptu

uruchomienie.jpg
uruchomienie.jpg

4. Kilka zrzutów ekranu z działania poniższego skryptu (na zachętę):

foto1.jpg
foto1.jpg
foto2.jpg
foto2.jpg
foto3.jpg
foto3.jpg
foto4.jpg
foto4.jpg

Skrypt optymalne_foto­.sh – działa na katalogu lub wewnątrz.

#! /bin/sh

  # skopiuj ten plik do katalogu ~/.gnome2/nautilus-scripts/
  #
  ##############################################################

  # Sprawdzam istnienie pakietu ImageMagick
  convert_path=`which convert`
  if [ ! "$convert_path" ] || [ ! -x "$convert_path" ]; then
  zenity --error --title="Problem" --text="Nie posiadasz zainstalowanego programu \"convert\".\nProszę zainstaluj pakiet ImageMagick."
  exit 1
  fi

  # Sprawdzam czy posiadamy jhead
  jhead_path=`which jhead`
  if [ ! "$jhead_path" ] || [ ! -x "$jhead_path" ]; then
  zenity --error --title="Problem" --text="Nie posiadasz zainstalowanego programu \"jhead\".\nProszę zainstaluj pakiet jhead."
  exit 1
  fi

  #================================

  # This script either opens in the current directory,

  # or in the selected directory

  base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
  if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
    dir="$base"
  else
    while [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done
    dir="$base/$1"
  fi

  for i in "$dir"; do
    dir_path="${i#file://}"
    dir_name=`basename "$dir_path"`

    if zenity --question --title "Pytanie" --text "Czy chcesz przekonwertować katalog: $dir_name ?\n\n Jakość fotografii JPG obniżona zostanie do 75%\n oraz wykonany zostanie auto-obrót jeśli będzie taka potrzeba?"
    then
     (for i in "$dir_path/"*.[jJ][pP][gG]; do
      jhead -autorot "$i"
      convert -quality 75 "$i" "$i"
      echo $?

      done
     ) | zenity --progress --title "Proszę czekać" --text "Trwa obróbka plików JPG" --pulsate --auto-close


     if [ "$?" -eq 1 ]; then
       zenity --info --title "Anulowano przetwarzanie." --text "Nie wszystkie fotografie zostały przekonwertowane.\n\nCzęść operacji wykonano, a część nie."
     else
       zenity --info --title "Koniec pracy nad katalogiem: $dir_name" --text "Obrazki JPG zostały przekonwertowane.\n\n Jakość obniżono do 75% z auto-obracaniem\n jeśli była taka potrzeba."
     fi

    else
      zenity --info --title "Przerwano proces obróbki fotografii." --text "Żadne czynności nie zostały wykonane."
      exit
    fi

  done

Jeśli potrzebujesz, zmień wartość do jakiej mają zostać przekonwertowane zdjęcia (75% to i tak niewyczuwalna różnica)

Zobacz także jak używać „zenity“: http://linux.byexamples.com/…-examples-2/

5
Twoja ocena: Brak Średnio: 5 (1 vote)