Archiv verlassen und diese Seite im Standarddesign anzeigen : Shellscript : extrahieren eines Teilstrings aus einem String
Schwarzer'Engel
23-07-2004, 19:13
Hallo,
ich frage mit
[merlin@Avalon thumbs]$ identify 0011918.jpg
0011918.jpg JPEG 120x80+0+0 PseudoClass 256c 8-bit 8kb 0.000u 0:01
[merlin@Avalon thumbs]$
die Eigenschaften eines Bildes ab. Nun benötige zur Weiterverarbeitung einen Teil aus dem Ergebnis, und zwar :
0011918.jpg JPEG 120x80+0+0 PseudoClass 256c 8-bit 8kb 0.000u 0:01
also die Angabe für Width und Height. Beides soll in einen extra String geschrieben werden.
Ausserdem soll dieser String ein Datantyp besitzen der diese beiden Werte vergleichbar macht, z.b.:
if width > height then
...
Wie funktioniert das, speziell das extrahieren der Teilstrings ?
Danke & Gruß
Christian
SeeksTheMoon
23-07-2004, 20:18
Bei komplexen Sachen bemüht man am besten sed, in diesem Fall gehts aber auch mit cut:
identify bild | cut -f3 -d" "
liefert Dir 120x80+0+0 und mit cut -f1 -d+ bekommst Du 120x80. -dx kann das nochmal zerlegen, wobei f1 dann 120 und f2 80 ist.
Hans-Georg Normann
23-07-2004, 22:09
Bei komplexen Sachen bemüht man am besten sed, in diesem Fall gehts aber auch mit cut:
identify bild | cut -f3 -d" "
liefert Dir 120x80+0+0 und mit cut -f1 -d+ bekommst Du 120x80. -dx kann das nochmal zerlegen, wobei f1 dann 120 und f2 80 ist.Dürfte nur funktionieren, solange der Dateiname kein Leerzeichen enthält.
@Schwarzer'Engel
Vearbeitest du so ausschließlich JPG Dateien?
Hans
Hans-Georg Normann
23-07-2004, 22:18
Das hier wird die besser gefallen:
[hans@rosi tmp]$ identify -format "%hx%w" mlna0074.jpg
2048x1536 Das ganze kannst du unter man ImageMagick nachlesen.
Hans
SeeksTheMoon
24-07-2004, 10:32
Dürfte nur funktionieren, solange der Dateiname kein Leerzeichen enthält.
dann schreibt man identify "bild". Die direkte Lösung von Dir mit imagemagick ist aber besser.
Schwarzer'Engel
24-07-2004, 18:03
Yeah, es geht :D
Mein script sieht nun so aus :
#!/bin/bash
DEF_PFAD=$PWD
echo "Pfad zu den Bildern [$DEF_PFAD]"
echo "Dateityp (jpg, tif, gif)"
read FILETYPE
for i in *$FILETYPE; do
BREITE=`identify -format "%w" "$i" `
HOEHE=`identify -format "%h" "$i" `
if [ $BREITE -gt $HOEHE ]; then
echo $i $BREITE $HOEHE Querformat
else
echo $i $BREITE $HOEHE Hochformat
fi
done
Es soll ein Script zum erstellen von Thumbnails werden, dazu muss ich natürlich auch vorher erst auswerten ob das Bild im Hoch- oder Querformat vorliegt. :D
Wenns fertig ist poste ich es hier auch noch...
Danke&Gruß
Chris
Hans-Georg Normann
25-07-2004, 18:05
Hi Schwarzer'Engel
dein Code sieht doch schon ganz gut aus. Was mich stört ist der doppelte Aufruf von identify ......
BREITE=`identify -format "%w" "$i" `
HOEHE=`identify -format "%h" "$i" `
Wie wäre es mit
set `identify -format "%w %h" "$i"`
BREITE=$1
HOEHE=$2Überprüf noch einmal was in deinem Script passiert, wenn BREITE gleich HOEHE ist? :(
Hans
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.