Strona Główna Unixy.pl
Internetowe forum na temat systemów GNU/Linux Unix

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload
 Ogłoszenie 
Strona korzysta z plików cookies w celu realizacji usług (logowanie do konta itp.). Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.

Poprzedni temat «» Następny temat
[BASH] Dodawanie znaku wodnego do grafiki
Autor Wiadomość
Maciek_Rutecki 
Administrator

JID: bc547@jabber.gda.pl
Pomógł: 39 razy
Dołączył: 07 Cze 2005
Posty: 2959
Wysłany: 2009-05-15, 13:00   [BASH] Dodawanie znaku wodnego do grafiki

Z potrzeby chwili stworzyłem skrypt, który w bieżącym katalogu obraca i dodaje znak wodny do fotografii:

Kod:
#!/bin/sh
# Skypt do dodawania znaku wodnego do zdjec/grafiki
# (C) Maciek Rutecki maciek(AT)unixy.pl
# Licencja GPLv2/GPLv3 (do wyboru)

przezroczystosc=25
rozszerzenie="jpg"
resized_dir="resized`date +%s`"

case "$1" in
    --help)
        echo -e "\nSkypt do dodawania znaku wodnego do plikow jpeg\n"
        echo -e "UZYCIE: znak_wodny.sh <plik_ze_znakiem_wodnym>"
        echo -e "w katalogu ze zdjeciami (biezacym).\n"
        echo -e "Przyklad":
        echo -e "znak_wodny.sh /home/user/watermark.png \n"
        exit 0
        ;;
    *)
        ;;
esac

COMP=`which composite`
IDENTIFY=`which identify`
CONVERT=`which convert`

if [ "$COMP" == "" ] ; then
    echo -e "\nBLAD: composite z ImageMagic jest wymagany!\n"
    exit 1
else
    echo -e "\ncomposite jest obecny - swietnie.\n"
fi

if [ "$IDENTIFY" == "" ] ; then
    echo -e "\nBLAD: identify z ImageMagic jest wymagany!\n"
    exit 1
else
    echo -e "\nidentify jest obecny - swietnie.\n"
fi

if [ "$CONVERT" == "" ] ; then
    echo -e "\nBLAD: convert z ImageMagic jest wymagany!\n"
    exit 1
else
    echo -e "\nconvert jest obecny - swietnie.\n"
fi

if [ "$1" == "" ]; then
    echo -e "\nBLAD: Podanie pliku ze znakiem wodnym zdecydowanie poprawi skutecznosc dzialania skryptu... \nPrzerywam.\n"
    exit 1
fi

if [ -f $1 ] ; then
    echo -e "\nPlik ze znakiem wodnym jest obecny - coraz lepiej.\n"
else
    echo -e "\nBLAD: Brak dostepu do pliku ze znakiem wodnym. Nie jest dobrze. \nPrzerywam.\n"
    exit 1
fi

mkdir "$resized_dir"

quantity=`ls . | grep $rozszerzenie | wc -l`

echo -e "\nPoprawiam orientacje zdjec.\n"
step=0
for image in *.$rozszerzenie; do
    let step=step+1
    orientation=`$IDENTIFY -verbose "$image" | grep -i Exif:Orientation: | awk '{print $2}'`
    target=`basename "$image"`

    if [  $orientation ]; then
        if [ $orientation -eq 6 ]; then
            $CONVERT -rotate 90 "$image" "$resized_dir/$target"
        else
            if [ $orientation -eq 8 ]; then
                $CONVERT -rotate 270 "$image" "$resized_dir/$target"
            else
                cp "$image" "$resized_dir/$target"
            fi
        fi
    else
        echo -e "Blad: brak nagłówków EXIF w pliku $image\nKontynuuje."
        cp "$image" "$resized_dir/$target"
        continue
    fi
    let progress=100*$step/$quantity
    echo -e  $progress"%\r\c"
done

echo -e "\nDodawanie znaku wodnego czas zaczac.\n"

cd "$resized_dir"
step=0
for image in *.$rozszerzenie; do
    let step=step+1
    $COMP -watermark $przezroczystosc% $1 $image wm-$image
    rm -f $image
    let progress=100*$step/$quantity
    echo -e  $progress"%\r\c"
done
cd ..
echo -e "\nZrobione! (chyba)"


Przykładowy wynik w załączniku.

wm-dsc_0053_kadr.jpg
Plik ściągnięto 348 raz(y) 748,96 KB

_________________
Maciek
http://www.maciek.unixy.pl
Ostatnio zmieniony przez Maciek_Rutecki 2009-05-15, 13:02, w całości zmieniany 1 raz  
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group