Image Resizer

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von aspire_5652, 03.11.2008.

  1. #1 aspire_5652, 03.11.2008
    aspire_5652

    aspire_5652 Tripel-As

    Dabei seit:
    02.01.2008
    Beiträge:
    198
    Zustimmungen:
    0
    Hallo, ich möchte mein selbst geschriebenes Shellscript vorstellen. Dieses Script verkleinert Digitale Bilder im ".jpg" Format auf vordefinierte Größen. Inspiration war der Wunsch nach einem schmalen Programm was genau diesen Zweck erfüllt und sich an den Linux-Bordmitteln bedient. Kritik und Anregung sind willkommen.

    Das Script kennt zwei Modi: Den textbasierten Kommandozeilenmodus und den GUI-Modus (Vorraussetzung: kde)

    Hier das Script:

    Code:
    #!/bin/bash
    
    function cli (){
    
    abort="false"
    for package in convert zip
    do
    	if [ $(which $package &> /dev/null; echo $?) -ne 0 ]
    	then
    		echo "'$package' nicht installiert"
    		abort="true"
    	fi
    done
    
    if [ ${abort} = true ]
    then
    	echo "=> bitte fehlende Pakete nachinstallieren um fortzufahren"
    	exit 1
    fi
    
    echo "Welche Auflösung soll verwendet werden?
    [1] 640x480
    [2] 800x600
    [3] 1024x768
    [4] 1200x900
    [5] 1600x1200"
    read answer
    
    case ${answer} in
    	1) RESOLUTION=640x480;;
    	2) RESOLUTION=800x600;;
    	3) RESOLUTION=1024x768;;
    	4) RESOLUTION=1200x900;;
    	5) RESOLUTION=1600x1200;;
    	*) echo "falsche Eingabe"; exit 1;;
    esac
    
    cd "$DIR"
    echo "Bilder werden verkleinert, bitte Geduld"
    
    len=$(find *.{JPG,jpg,JPEG,jpeg} -maxdepth 1 2> /dev/null | wc -l) 
    declare -i i
    i=1
    
    mkdir -p ./work
    for IMAGE in $(find *.{JPG,jpg,JPEG,jpeg} -maxdepth 1 2> /dev/null)
    do
    	echo "Bild $i von $len"
    	convert -resize ${RESOLUTION} "${IMAGE}" "./work/${IMAGE}"
    	i=$i+1
    done
    
    echo -e "Die Verkleinerung der Bilder ist nun abgeschlossen.\nSollen die Bilder zusätzlich komprimiert werden? (zip) [y/n]"
    read answer
    if [ $answer == y ]
    then
    	cd ./work
    	zip images.zip *.{JPG,jpg,JPEG,jpeg}
    	cd ..
    	mv ./work/images.zip .
    	rm -r ./work
    	echo "Komprimierung abgeschlossen."
    fi
    cd $OLD_DIR
    }
    
    function gui () {
    if [ $(which kdialog &> /dev/null; echo $?) -ne 0 ]
    	then
    	echo "'kdialog' nicht installiert"
    	echo "=> bitte fehlendes Paket nachinstallieren um fortzufahren"
    	exit 1
    fi
    
    abort="false"
    for package in convert zip
    do
    	if [ $(which $package &> /dev/null; echo $?) -ne 0 ]
    	then
    		missing_package="$missing_package '$package'"
    		abort="true"
    	fi
    done
    
    if [ ${abort} = true ]
    then
    	kdialog --error "Folgende Pakete fehlen: $missing_package.\nBitte fehlende Pakete nachinstallieren um fortzufahren"
    	exit 1
    fi
    
    DIR=$(kdialog --getexistingdirectory "/windows/backup/Photos Fuji F31fd")
    cd "$DIR"
    
    RESOLUTION=$(kdialog --combobox "Bitte Auflösung wählen:" "640x480" "800x600" "1024x768" "1200x900" "1600x1200")
    
    len=$(find *.{JPG,jpg,JPEG,jpeg} -maxdepth 1 2> /dev/null | wc -l)
    mkdir -p ./work
    
    dcopRef=$(kdialog --progressbar "${len} Bilder werden verkleinert, bitte Geduld." ${len})
    dcop $dcopRef setAutoClose true
    for IMAGE in $(find *.{JPG,jpg,JPEG,jpeg} -maxdepth 1 2> /dev/null)
    do
    	convert -resize ${RESOLUTION} "${IMAGE}" "./work/${IMAGE}"
    	inc=$((`dcop $dcopRef progress` + 1))
    	dcop $dcopRef setProgress $inc;
    done
    dcop $dcopRef close &> /dev/null
    
    kdialog --title "Vorgang abgeschlossen" --yesno "Die Verkleinerung der Bilder ist nun abgeschlossen.\n Sollen die Bilder zusätzlich komprimiert werden? (zip)"
    if [ $? -eq 0 ]
    then
    	ZIP_FILE=$(kdialog --getsavefilename . ".zip")
    	cd ./work
    	zip images.zip *.{JPG,jpg,JPEG,jpeg} &> /dev/null
    	cd ..
    	mv ./work/images.zip "${ZIP_FILE}"
    	rm -r ./work
    	kdialog --msgbox "Komprimierung abgeschlossen."
    fi
    
    }
    
    if [ -z $1 ]
    then
    	echo -e "bitte Modus wählen:\nGrafikmodus:         '--gui'\nKommandozeilenmodus: '--cli' <Zielverzeichnis>\n" 
    	exit 1
    else
    	echo $2
    	if [ $1 == "--cli" ]
    	then
    		if [ -z $2 &> /dev/null ]
    		then
    			echo "Im '--cli' Modus bitte Zielverzeichnis mit übergeben, Abbruch."
    			exit 1
    		else
    			if [ ! -d "$2" ]
    			then
    				echo "$2 ist kein Verzeichnis, Abbruch."
    				exit 1
    			fi
    		fi
    		DIR="$2"
    		OLD_DIR=$(pwd)
    	fi
    
    	case $1 in 
    	--gui)	gui;;
    	--cli)	cli;;
    	*)		echo "falsche Eingabe"; exit 2;;
    esac
    fi
    
    
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tuxlover, 03.11.2008
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
Thema:

Image Resizer

Die Seite wird geladen...

Image Resizer - Ähnliche Themen

  1. Open Container Initiative arbeitet an Spezifikation für das Format von Container-Images

    Open Container Initiative arbeitet an Spezifikation für das Format von Container-Images: Die Open Container Initiative (OCI) arbeitet an Spezifikationen für Standards rund um das Thema Container. Das neueste Projekt dreht sich um eine...
  2. Linux AIO legt Image mit allen Desktops von Debian 8.3 »Jessie« vor

    Linux AIO legt Image mit allen Desktops von Debian 8.3 »Jessie« vor: Das Projekt Linux AIO (Linux All in One) bietet ISO-Abbilder einiger populärer Linux-Distributionen an und vereint dabei alle jeweiligen Desktops...
  3. Debian Live 32 und 64 Bit in einem Image

    Debian Live 32 und 64 Bit in einem Image: Hallo, ich hab mir ein Debian Live auf nen USB-Stick gepackt, Grub installiert, alles schick! ... was jetzt natürlich noch gut wäre, wenn man, wie...
  4. Erstes Live-Image mit Wayland für Plasma 5 verfügbar

    Erstes Live-Image mit Wayland für Plasma 5 verfügbar: Jonathan Riddell hat das erste offizielle Testabbild für Wayland unter Plasma 5 freigegeben. Weiterlesen...
  5. Debian veröffentlicht künftig keine CD-Images mehr

    Debian veröffentlicht künftig keine CD-Images mehr: Debian ändert seine Richtlinien bei der Veröffentlichung von Installationsmedien und veröffentlicht künftig keine CD-Images mehr. Weiterlesen...