[#] Auto-miniaturki - skalujemy obrazki dla www z użyciem ImageMagick

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

Publikując często na łamach serwisów internetowych nasze „obrazki / fotki“ czy cokolwiek tam innego, prawie zawsze stajemy przed koniecznością przeskalowania ich do różnych (często tych samych) wymiarów. Ot choćby fotografia z aparatu cyfrowego w rozmiarach 1600×1200. Taka „fotka“ już stanowi problem aby ją pokazać użytkownikom w internecie, a i często nie jest to w ogóle konieczne aby była ona w tak wielkiej rozdzielczości.

Dysponując systemem Linux, nasze możliwości nie znają granic. I tak jest również tym razem. aby zautomatyzować całą pracę wystarczy że zapoznacie się z poniższym artykułem.

auto-miniaturki1.jpg
auto-miniaturki1.jpg
auto-miniaturki2.jpg
auto-miniaturki2.jpg
auto-miniaturki3.jpg
auto-miniaturki3.jpg
nautilus-scripts.jpg
nautilus-scripts.jpg

Aby osiągnąć taki luksus jak wyżej, wystarczy nam do tego skrypt .sh którego zawartość prezentuję poniżej (oraz w załączniku)

auto-miniaturki.sh

#! /bin/sh

  # Sprawdzam 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

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

  # Okienko z wyborem rozmiaru miniaturek.
  SIZE=`zenity --list --radiolist  --width=200 --height=300 --title="Wybierz rozmiar miniaturek" \
  --text "Jakoś miniaturek automatycznie zostanie zmieniona\nna 75% oryginalnej jakości.\n" \
  --column="Wybrane" --column="wielkosc" --column="Rozmiar" \
  --hide-column="2" \
  --print-column="2" \
  FALSE "Inny" "Inny" \
  TRUE "320x240" "320x240" \
  FALSE "640x480" "640x480" \
  FALSE "800x600" "800x600" \
  FALSE "1024x768" "1024x768"`

  test $? -ne 0 && exit  # Anulowanie

  if [ -z "$SIZE" ];then
   zenity --error --text="Nie wybrałeś rozmiaru miniaturki.\nProszę wybierz rozmiar, który ma zostać użyty."
   exit
  fi

  if [ "$SIZE" = Inny ];then
    SIZE=`zenity --entry --title="Własny wymiar miniaturki" --text="Podaj własny rozmiar miniaturki np.: 800x600"`

    if [ $SIZE -eq ""]; then
      zenity --error --text="Brak parametrów rozmiaru."
      exit
    fi
  fi


  # Ile plików tworzy pasek postępu
  PROGRESS=0
  NUMBER_OF_FILES=`find -maxdepth 1 -iname "*.[jJ][pP][gG]" | wc -l`

  if [ "$NUMBER_OF_FILES" -le 0 ]; then
    zenity --error --title="Problem" --text="W bieżącym katalogu nie ma obrazków .jpg."
    exit 1
  fi

  INCREMENT=$((100/$NUMBER_OF_FILES))

  mkdir -p miniaturki

  # Tworzenie miniaturek. Specyficzne zmiany na obrazku powinny byc wprowadzane jako opcja polecenia convert
  (for i in *.[jJ][pP][gG]; do
   echo "$PROGRESS";
   echo "# Pracuję nad miniaturką:  $i";
   convert -resize "${SIZE}"  -bordercolor black -border 5x5 -quality 75 "${i}" miniaturki/"${i}"
   PROGRESS=`expr $PROGRESS + $INCREMENT`

   echo $?

  done
  ) | zenity  --progress  --title "Tworzę miniaturki..." --percentage=0 --auto-close


  if [ "$?" -eq 1 ]; then
    zenity --info --title "Anulowano przetwarzanie." --text "Nie wszystkie miniaturki zostały wykonane.\n\nCzęść operacji wykonano, a część nie."
   else
     zenity --info --title "Koniec pracy nad katalogiem" --text "Utworzono miniaturki obrazków JPG. \n\nWynik operacji zapisano w katalogu: miniaturki."
   fi

plik auto-miniaturki należy skopiować do katalogu skryptów nautilusa: ~/.gnome2/nautilus-scripts/auto-miniaturki

Skrypt oczywiście można dostosować do własnych potrzeb. Ot choćby ramka którą ja tworzę może być mniejsza/większa lub wcale nie istnieć. Wykorzystując polecenie convert z pakietu ImageMagick możemy praktycznie wykonać dowolną czynność z naszymi obrazkami. Jeśli nie posiadamy pakietu ImageMagick to skrypt nam nie zadziała. Możemy go doinstalować wydając polecenie:

sudo apt-get install imagemagick

Polecam zapoznać się z linią odpowiadająca za obróbkę plików .jpg.

convert -resize "${SIZE}"  -bordercolor black -border 5x5 -quality 75 "${i}" miniaturki/"${i}"

warto wykonać w konsoli convert –help, aby dowiedzieć się więcej o jego możliwościach.

Przydatne linki:

Kurs Basha

5
Twoja ocena: Brak Średnio: 5 (2 głosy)