PDA

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