Bilder verkleinern

Post Reply
Message
Author
brum

Bilder verkleinern

#1 Post by brum »

Moderne Digitalkameras sind sehr hochauflösend.

Möchte man nun eine Reihe Fotos von dieser in den "Fotodruckautomat" einlesen, so würde der Vorgang in Originalgröße sehr viel Zeit beanspruchen.
Ähnliche Probleme ergeben sich, möchte man die Bilder per Mail versenden. Die meisten Postfächer sind im Volumina begrenzt.

Für solche Verkleinerung eignet sich sehr gut das Programm ImageMagick mit seiner Kommandozeilenanweisung "convert":

Code: Select all

 
$ mkdir transfer
$ for PIC in $(ls -1 *.JPG); do PIC2=`echo $PIC|cut -d. -f1`; convert  $PIC -verbose -filter Gaussian -resize 2048x2048 -density 300x300 transfer/$PIC2.res.jpg; done

 DSC00559.JPG=>transfer/DSC00559.res.jpg JPEG 4592x3056=>2048x1363 2048x1363+0+0 8-bit DirectClass 770KB 1.260u 0:01.270
 DSC00562.JPG=>transfer/DSC00562.res.jpg JPEG 4592x3056=>2048x1363 2048x1363+0+0 8-bit DirectClass 750KB 1.270u 0:01.280
 DSC00563.JPG=>transfer/DSC00563.res.jpg JPEG 4592x3056=>2048x1363 2048x1363+0+0 8-bit DirectClass 766KB 1.290u 0:01.290
Alle Bilder mit Endung JPG werden nach der Bearbeitung in das Verzeichnis transfer abgelegt. Die Bilder werden zu einer Auflösung von 300 dpi - das reicht für Kunstdruck - mit einer Pixelszal der längsten Seite von 2048 konvertiert.
Das Ergibt in der Praxis, mit dem Digitalkameraformat eine Bildgröße von 2048x1363 Pixel
Dieser Wert reicht. Mit diesem Werten lassen sich Bilder von 9x13 cm in guter Qualität in Auftrag geben.Die Größe des JPGs liegt im Mittelwert bei 750 kB.

- have a lot of fun -

brum

rest

#2 Post by brum »

Da ging was verloren:
Dieser Wert reicht... für eine Bldgröße von 9x13 in guter Qualität

Die 2 Anweisung ist eine Zeile.

gast

10x15

#3 Post by gast »

Hallo,

die so bearbeiten Bilder ergeben auch noch gut Qualität bei Belichtung auf 10x15.

http://www.janssen-wiegand.de/bild_date ... esung.html

Mr.frosch

#4 Post by Mr.frosch »

genau das was ich gesucht habe, allerdings sind meine Bilder trotzdem noch über 2 MB groß

Code: Select all

IMGP4044.JPG=>upload/IMGP4044.res.jpg JPEG 4672x3104=>2048x1361 2048x1361+0+0 8-bit DirectClass 2.425MB 1.920u 0:01.219
IMGP4045.JPG=>upload/IMGP4045.res.jpg JPEG 4672x3104=>2048x1361 2048x1361+0+0 8-bit DirectClass 2.425MB 1.930u 0:01.149
kann ich da noch irgend etwas anders machen?

LG

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#5 Post by Janka »

Du kannst den Schalter "-quality 80%" benutzen, um die Kompression zu erhöhen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

brum

Nachtrag

#6 Post by brum »

Hallo,

hatte gerade etwas Zeit und ein paar neue Bilder.
Darum habe ich ich den obigen Aufruf in ein Skript gepackt.
Die Bilder liegen im Home-Verzeichnis unter ~/Bilder/4resize/original und in diesem werden die bearbeiteten Biler in einem Ordner "skaliert" abgelegt.

Code: Select all

#!/bin/bash
# Alle Bilder innerhalb des Vereichnisses werden verkleinert und in einem neuen Verzeichnis abgelegt.

BILD_HOME=/home/`whoami`/Bilder/4resize/original
cd $BILD_HOME

SKAL_VERZ_HOME=/home/`whoami`/Bilder/4resize/original
SKAL_VERZ_NAME=skaliert

echo -e  "\033[1mKonvertiere alle jpg-Bilder des Verzeichnisses `pwd` \n\
zu 300dpi sowie 2048 Pixel Seitenwert und speichere diese im Ordner \033[32;1m$SKAL_VERZ_HOME/$SKAL_VERZ_NAME\033[0m"
echo " "

if [ -d $SKAL_VERZ_NAME ]; then
	echo "Verzeichnis $SKAL_VERZ_NAME vorhanden";
	else
	echo "Verzeichnis $SKAL_VERZ_NAME fehlt";
	mkdir $SKAL_VERZ_NAME

	if [ -d $SKAL_VERZ_NAME ]; then
               echo "Ordner $SKAL_VERZ_NAME erfolgreich erstellt";
        else
               echo "keine Schreibrechte in `pwd`";
               exit 1
        fi
fi
echo " "

for PIC in $(ls -1 *.JPG & ls -1 *.jpg); 
  do PIC2=`echo $PIC|cut -d. -f1`; 
    convert  $PIC -verbose -filter Gaussian -resize 2048x2048 -density 300x300 -quality 80% ./$SKAL_VERZ_NAME/$PIC2.res.jpg; 
done 
echo " "
echo " "

NB=`ls -1 $SKAL_VERZ_HOME/$SKAL_VERZ_NAME/|grep res|wc -l`
echo "Es wurden folgende $NB Bilder konvertiert:"
echo " "
ls -lh $SKAL_VERZ_HOME/$SKAL_VERZ_NAME/|grep res|cut -d" " -f5,8
echo " "
echo -e "\033[1mFertig, drücke eine Eingabe-Taste zum Beenden...\033[0m"
read -n 1 -s
So finde ih dieses immer wieder ;)

Gruß brum

Post Reply