Benutzer-Werkzeuge

Webseiten-Werkzeuge


bilder_bearbeiten

Bilder bearbeiten

Laut dem Test "Comparing AVIF vs WebP file sizes at the same DSSIM" kann man gegenüber JPEG bei gleicher Bildqualität durchschnittlich mit WebP ca. 30% und mit AVIF ca. 50% am Plattenplatz sparen.

Bildinformationen: Metadaten / EXIF

In diesem Abschnitt wird nur beschrieben, wie man sich die Informationen anzeigen lässt, die als Metadaten in der Bilddatei gespeichert sind.

Es werden keine Veränderungen an der Bilddatei vorgenommen.

Installation von exiftool (FreeBSD 13.0):

> pkg install graphics/p5-Image-ExifTool

alle EXIF-Informationen anzeigen:

> exiftool -EXIF:ALL 1947_Cadillac_Fleetwood.jpg

Ausrichtung eines Bildes auslesen:

> exiftool -EXIF:Orientation 1947_Cadillac_Fleetwood.jpg
Orientation                     : Horizontal (normal)

> exiftool -EXIF:Orientation CZ85.jpg
Orientation                     : Rotate 180

> exiftool -EXIF:Orientation Regeln_fuer_das_Mensch_sein.jpg
Orientation                     : Rotate 90 CW

/home/bin/bild_alle_metadaten_zeigen.sh

#!/bin/bash

DATEI="${1}"

if [ ! -r "${DATEI}" ] ; then
        echo "${0} [Bilddatei.jpg]"
        exit 0
fi

DATEI="${1}"

PHPBIN="$(which php)"
if [ -z "${PHPBIN}" ] ; then
        echo "PHP ist nicht installiert..."
        exit 1
fi

PHPANFANG='<?php $bild = '
PHPENDE='; $exif_data = exif_read_data ( $bild ); print_r($exif_data); ?>'
METADAT="$(echo "${PHPANFANG}'${DATEI}'${PHPENDE}" | ${PHPBIN})"
echo "${METADAT}"

/home/bin/bildformat_zeigen.sh

PHP muss natürlich installiert sein! Alternativ geht das auch mit ImageMagic

#!/bin/bash

DATEI="${1}"

if [ ! -r "${DATEI}" ] ; then
        echo "${0} [Bilddatei.jpg]"
        exit 0
fi

DATEI="${1}"

PHPBIN="$(which php)"
if [ -z "${PHPBIN}" ] ; then
        echo "PHP ist nicht installiert..."
        exit 1
fi

PHPANFANG='<?php $bild = '
PHPENDE='; $info = getimagesize ( $bild ); print $info["0"] . "x" . $info["1"]; ?>'
ORFORMAT="$(echo "${PHPANFANG}'${DATEI}'${PHPENDE}" | ${PHPBIN} | egrep '[0-9][x][0-9]')"
echo "${ORFORMAT}"

/home/bin/bildaufnahmezeit_zeigen.sh

Hiermit kann man sich die Uhrzeit anzeigen lassen, zu der das Bild aufgenommen wurde (Auslöserzeitpunkt).

#!/bin/bash

DATEI="${1}"

if [ ! -r "${DATEI}" ] ; then
        echo "${0} [Bilddatei.jpg]"
        exit 0
fi

PHPBIN="$(which php)"
if [ -z "${PHPBIN}" ] ; then
        echo "PHP ist nicht installiert..."
        exit 1
fi

PHPANFANG='<?php $bild = '
PHPENDE='; $exif_data = exif_read_data ( "$bild" ,'EXIF' ,0 ); echo $exif_data['DateTimeOriginal'] . "\n";?>'
ORIZEIT="$(echo "${PHPANFANG}'${DATEI}'${PHPENDE}" | ${PHPBIN})"
echo "${ORIZEIT}"

Bild verändern

In diesem Abschnitt wird beschrieben, wie man bestimmte Veränderungen an den Bildern vornimmt.

/home/bin/bild_drehen.sh

#!/bin/bash

if [ -z "${2}" ] ; then
	echo "${0} [Drehwinkel] [Bild [Bild[...]]]"
	echo "${0} 90 [Bild [Bild[...]]]"
	echo "${0} 180 [Bild [Bild[...]]]"
	echo "${0} 270 [Bild [Bild[...]]]"
      echo "${0} -90 [Bild [Bild[...]]]"
	echo "${0} 132.5 [Bild [Bild[...]]]"
	exit 0
fi

if [ -z "$(echo "${1}" | egrep '^[+-]*[0-9]+$|^[+-]*[0-9]+[.][0-9]*$')" ] ; then
	echo "${0} [Drehwinkel] [Bild [Bild[...]]]"
	echo "${0} 90 [Bild [Bild[...]]]"
	echo "${0} 180 [Bild [Bild[...]]]"
	echo "${0} 270 [Bild [Bild[...]]]"
      echo "${0} -90 [Bild [Bild[...]]]"
	echo "${0} 132.5 [Bild [Bild[...]]]"
	exit 0
else
	WINKEL="${1}"
	shift
fi

IMGMAGC="$(which convert)"
if [ -z "${IMGMAGC}" ] ; then
	echo "ImageMagic ist nicht installiert"
	exit 1
fi

ZUFALLSWERT="$(head -c 1000 /dev/urandom | tr -cd '[:alnum:]' | cut -b-8)"

for i in ${@}
do
	VERZ="$(dirname ${i})"
	DATEI="$(basename ${i})"

	#echo "convert -rotate ${WINKEL} ${i} ${VERZ}/${ZUFALLSWERT}_${DATEI} && mv -v ${VERZ}/${ZUFALLSWERT}_${DATEI} ${i}"
	convert -rotate ${WINKEL} ${i} ${VERZ}/${ZUFALLSWERT}_${DATEI} && mv -v ${VERZ}/${ZUFALLSWERT}_${DATEI} ${i}
done

/home/bin/bilder_resize.sh

Mit diesem Script werden PNG-Bilder im PAL-Format erzeugt, um daraus einen Film oder eine Slideshow zu erstellen.

/home/bin/bilder_resize.sh
#!/bin/bash
 
#------------------------------------------------------------------------------#
#
# Größe von Bildern ändern
#
#------------------------------------------------------------------------------#
 
VERSION="v2020012701"
 
if [ ! -r "${2}" ] ; then
        echo "${0} 720x540 [Bild.jpg]"
        echo "${0} 720x540 [Bild.jpg] [Bild.jpg]"
        echo "${0} 720x540 [Bild [Bild[...]]]"
        exit 0
fi
 
NFORMAT="${1}"
shift   
 
for DATEI in ${@}
do
        BILD="$(basename ${DATEI} | rev | awk '{sub("[.]"," ");print $2}' | rev)"
        OFORMAT="$(identify ${DATEI} | awk '{print $3}' || exit 1)"
        if [ -n "${OFORMAT}" ] ; then
 
                echo "convert -size ${OFORMAT} ${DATEI} -resize ${NFORMAT} -background black -compose Copy -gravity center -extent ${NFORMAT} -quality 95 ${BILD}_${NFORMAT}.png"
 
                convert -size ${OFORMAT} ${DATEI} -resize ${NFORMAT} -background black -compose Copy -gravity center -extent ${NFORMAT} -quality 95 ${BILD}_${NFORMAT}.png
                identify ${BILD}_${NFORMAT}.png
        fi
done
> time /home/bin/bilder_resize.sh 480x360 *.jpg

/home/bin/bilder_bewegen.sh

Dieses Script wandelt alle Bilder, die im aktuellen Verzeichnis liegen in eine Video-Datei um.

Die Voreinstellungen sind so gewählt, dass der Film das PAL-Bildformat von 720x576 Bildpunkten bekommt und die Bilder in einem DivX5 kompatiblem Format kodiert werden.

#!/bin/bash

FPS="0.3"               # Anzahl der Bilder pro Sekunde
                        # 0.1 bis 1 => Slideshow
                        # 15 bis 30 => Film
NEFORMAT="720x576"      # neues Format

#------------------------------------------------------------------------------#

BILDENDG="png"          # Zwischenbildformat
ZUFALLSWERT="$(head -c 1000 /dev/urandom | tr -cd '[:alnum:]' | cut -c-8)"
BILDER="$(ls ${@})"
echo "$(ls ${BILDER} | wc -l) Bilder wurden gefunden."

#------------------------------------------------------------------------------#

KONV="$(which convert)"
IDEN="$(which identify)"

if [ -z "${KONV}" -o -z "${IDEN}" ] ; then
        echo "ImageMagic muss installiert sein!"
        exit 1
fi

if [ -z "${BILDER}" ] ; then
        echo "${0} *"
        echo "${0} *.jpg"
        echo "${0} 2002000000.jpg 2003080000.jpg 2003080006.jpg 2003101401.jpg"
        exit 0
fi

#------------------------------------------------------------------------------#

NR="0"
for i in ${BILDER}
do

BILDBN="$(basename ${i} | rev | awk '{sub("[.]"," ");print $2}' | rev)"
OFORMAT="$(identify ${i} | awk '{print $3}' || exit 1)"
if [ -n "${OFORMAT}" ] ; then
        NR="$(echo "${NR}" | awk '{printf("%.8u\n", 1+$1)}')"
        convert -size ${OFORMAT} ${i} -resize ${NEFORMAT} -background black -compose Copy -gravity center -extent ${NEFORMAT} -quality 95 ${NR}_${BILDBN}_${NEFORMAT}_${ZUFALLSWERT}.${BILDENDG}
        #identify ${NR}_${BILDBN}_${NEFORMAT}_${ZUFALLSWERT}.${BILDENDG}
        ls -lh ${NR}_${BILDBN}_${NEFORMAT}_${ZUFALLSWERT}.${BILDENDG}
fi

done

################################################################################
# erste Datei wird überprüft

EDATEI="$(ls *_${NEFORMAT}_${ZUFALLSWERT}.${BILDENDG} | head -n1)"
if [ ! -r "${EDATEI}" ] ; then
        echo "Die erste vorbereitete Bilddatei '${EDATEI}' ist nicht lesbar."
        exit 1
fi

TYP="$(identify ${EDATEI} | awk '{print tolower($2)}' | egrep 'jpeg|png|tga|sgi')"
if [ -z "${TYP}" ] ; then
        echo "Der Typ der ersten vorbereiteten Bilddatei '${EDATEI}' konnte nicht ermittelt werden."
        exit 1
fi

FORMAT="$(identify ${EDATEI} | awk '{print tolower($3)}')"
if [ -z "${FORMAT}" ] ; then
        echo "Der Typ der ersten vorbereiteten Bilddatei '${EDATEI}' konnte nicht ermittelt werden."
        exit 1
fi

if [ "${NEFORMAT}" != "${FORMAT}" ] ; then
        echo "Das Format der ersten vorbereiteten Bilddatei '${EDATEI}' stimmt nicht."
        exit 1
fi

BREIT="$(echo ${FORMAT} | awk '{gsub("x"," ");print $1}')"
HOCH="$(echo ${FORMAT} | awk '{gsub("x"," ");print $2}')"

#------------------------------------------------------------------------------#

AUSBR="$(echo "${FORMAT} ${FAKTOR}" | awk '{gsub("x"," ");print $1 * $2 * $3}')"
mencoder -ovc lavc -lavcopts vcodec=mpeg4 mf://*_${NEFORMAT}_${ZUFALLSWERT}.${BILDENDG} -mf type=${TYP}:w=${BREIT}:h=${HOCH}:fps=${FPS} -nosound -o ${NEFORMAT}_${ZUFALLSWERT}.avi

rm -f *_${NEFORMAT}_${ZUFALLSWERT}.${BILDENDG}
ls -lh ${NEFORMAT}_${ZUFALLSWERT}.avi
/home/http/wiki/data/pages/bilder_bearbeiten.txt · Zuletzt geändert: von manfred