Hallo lieber Listenleser.
Convert ist ein feines Tool, man kann viel verändern.
Gibt es aber einen Weg convert dazu zu bewegen einen wert in eine variable zu übergeben - zb wie gross die höhe und wie gross die breite eines bildes ist?
habe mich über man convert und über die convert ausgabe gestürzt aber nichts finden können!
Bin für jeden Tip dankbar
Marco
convert -geometry <newvalues> olfimage newimage
man convert
ich meinte so was
#!/usr/bin/bash variable01=`convert -getsize image.jpg`
ich muss herausfinden wie gross die bilder sind
grund: nur so ist es mir möglich herauszufinden ob die bilder hochformat oder querformat sind
Erst wenn ich das weiss kann ich mit dem resize beginnen den befehl mit geometry kannte ich schon .... (möglicherweise habe ich mich etwas missverständlich ausgedrückt)
Marco
Marco Kammerer wrote:
ich meinte so was
#!/usr/bin/bash variable01=`convert -getsize image.jpg`
ich muss herausfinden wie gross die bilder sind
Aha, dann vielleicht so als Workaround:
convert -verbose -geometry 100%x100% fileold filenew && /bin/rm filenew
Etwas schmutzig, aber convert gibt mit verbose tatsächlich eine Zeile in der Art
Image Width: 100 Image Length: 69
aus, während Du bei geometry einfach jeweils 100% angibst. Vielleicht kannst Du die Idee noch etwas verfeinern...
Ciao, Matthias
On Die, Jun 12, 2001 at 11:35:05 +0200, Marco Kammerer wrote: [und wer war das hier? Bitte Vorredner stehen lassen]
convert -geometry <newvalues> olfimage newimage
man convert
ich meinte so was
#!/usr/bin/bash variable01=`convert -getsize image.jpg`
ich muss herausfinden wie gross die bilder sind
<aus einem alten Skript von mir> m=`convert -verbose -geometry 100% image.jpg /tmp/image.jpg 2>/dev/null |\ tail -1 | cut -f2 -d"=" | cut -f2 -d" " | cut -f1 -d"+"` b=`echo $m | cut -f1 -d"x"` h=`echo $m | cut -f2 -d"x"`
grund: nur so ist es mir möglich herauszufinden ob die bilder hochformat oder querformat sind
Erst wenn ich das weiss kann ich mit dem resize beginnen den befehl mit geometry kannte ich schon .... (möglicherweise habe ich mich etwas missverständlich ausgedrückt)
Was ist das Ziel? Wenn Du z. B. Thumbnails bauen willst, die eine besimmte Breite oder Höhe nicht überschreiten, dann gib diese Maximalwerte einfach an. convert behält beim Umrechnen die Proportionen bei:
convert -geometry ${max_b}x${max_h} image.jpg thumbnail.jpg
Jan
P.S.: Macht das wirklich solche Mühe, sich halbwegs an die deutsche Rechtschreibung zu halten? Es macht keinen Spass, Deine Mails zu lesen.
Jan Trippler schrieb am Montag den 18. Juni 2001:
m=`convert -verbose -geometry 100% image.jpg /tmp/image.jpg 2>/dev/null |\ tail -1 | cut -f2 -d"=" | cut -f2 -d" " | cut -f1 -d"+"`
Etwas übertrieben :)
m=`identify -ping image.jpg | cut -f2 -d' '`
tuts auch.
b=`echo $m | cut -f1 -d"x"` h=`echo $m | cut -f2 -d"x"`
Gruß Jens
On Mon, Jun 18, 2001 at 01:20:48 +0200, Jens Tautenhahn wrote:
Jan Trippler schrieb am Montag den 18. Juni 2001:
m=`convert -verbose -geometry 100% image.jpg /tmp/image.jpg 2>/dev/null |\ tail -1 | cut -f2 -d"=" | cut -f2 -d" " | cut -f1 -d"+"`
Etwas übertrieben :)
m=`identify -ping image.jpg | cut -f2 -d' '`
tuts auch.
War ja auch ein altes Skript ;-) Aber danke für den Tipp, identify hatte ich noch gar nicht im *aktiven Befehlsumfang* (wie man ja gesehen hat).
Jan
Jan Trippler:
Was ist das Ziel? Wenn Du z. B. Thumbnails bauen willst, die eine besimmte Breite oder Höhe nicht überschreiten, dann gib diese Maximalwerte einfach an. convert behält beim Umrechnen die Proportionen bei:
Das Script ist inzwischen fertig.
Der Grund warum ich die Grösse wissen musst war folgender:
Das Script prüft das Bild auf Pixelhöhe und die Pixelbreite. Nun weiss das Script ob das Bild Hochformat bzw Querformat ist.
Ich habe dem Script einen Parameter mitübergeben, welcher den grösseren Pixelwert darstellt. Ist das Bild nun Querformat so rechnet convert - wie du es bereits oben erwähnt hast - mit der richtigen proportion das bild um. Wenn nun das Bild aber Hochformat ist ,musste ich auf die neue Breite rückrechnen und diese Werte ( BreiteNEUxHöheNEU ) convert als Parameter übergeben.
Das "Programm" ist fertig und tut nun seinen Zweck: a.) Dateierweiterung prüfen (GIF, JPG, etc.) b.) FileSize prüfen (grösser als bsp. 40 k), c.) Prüfen ob auch wirklich gif oder jpg d.) Imagepixelsize prüfen e.) Feststellen ob Hoch oder Querformat f.) Bilder auf einen Maximalwert von 500 - entweder für Höhe oder Breite - scalieren, und g.) das Originalbild sichern
das script wird mit cron gestartet.
Danke für die Mithilfe.
Marco
Jan Trippler:
P.S.: Macht das wirklich solche Mühe, sich halbwegs an die
deutsche
Rechtschreibung zu halten? Es macht keinen Spass, Deine Mails zu lesen.
Ok. Ich werd mir Mühe geben, mich an die Regeln zu halten.
Ich werde ebenfalls versuchen den Vorredner zu erwähnen (wenn auch händisch).
On Mon, Jun 25, 2001 at 05:08:28 +0200, Marco Kammerer wrote: [...]
Der Grund warum ich die Grösse wissen musst war folgender:
Das Script prüft das Bild auf Pixelhöhe und die Pixelbreite. Nun weiss das Script ob das Bild Hochformat bzw Querformat ist.
Ich habe dem Script einen Parameter mitübergeben, welcher den grösseren Pixelwert darstellt. Ist das Bild nun Querformat so rechnet convert - wie du es bereits oben erwähnt hast - mit der richtigen proportion das bild um. Wenn nun das Bild aber Hochformat ist ,musste ich auf die neue Breite rückrechnen und diese Werte ( BreiteNEUxHöheNEU ) convert als Parameter übergeben.
Hmm, ich weiss nicht, ob ich Dich jetzt richtig verstanden habe: Du willst die Bildchen so konvertieren, dass Hochformate 500 Pixel hoch (und demzufolge < 500 Pixel breit) werden und Querformate 500 Pixel breit (und demzufolge < 500 Pixel hoch) werden? (die 500 nur als Beispiel)
Das war es, was ich meinte. Wenn Du convert mit -geometry 500x500 aufrufst, dann wird ein 2000x1000 Pixel großes Bild zu 500x250 und ein 1000x2000 großes zu 250x500. Du brauchst nichts mehr zu rechnen.
Kann aber auch sein, dass ich Dich total verstanden miss habe ;-)
Jan
Hallo
Jan Trippler schrieb am 25.6.2001
Hmm, ich weiss nicht, ob ich Dich jetzt richtig verstanden habe:
Du
willst die Bildchen so konvertieren, dass Hochformate 500 Pixel
hoch
(und demzufolge < 500 Pixel breit) werden und Querformate 500
Pixel
breit (und demzufolge < 500 Pixel hoch) werden? (die 500 nur als Beispiel)
Das war es, was ich meinte. Wenn Du convert mit -geometry 500x500 aufrufst, dann wird ein 2000x1000 Pixel großes Bild zu 500x250 und ein 1000x2000 großes zu 250x500. Du brauchst nichts mehr zu
rechnen.
Kann aber auch sein, dass ich Dich total verstanden miss habe ;-)
(Spät aber doch meine Antwort) Doch Du hast mich leider richtig verstanden und hier auch wirklich recht. Ich habe das beim Testen sehr wahrscheinlich nur mit -geometry 500 ausprobiert.
Ich habe mir hier unnötig Arbeit angetan! Tja Pech für mich. Nun rechnet das Script die Pixel wild rum (in zsh mit floats und was weiss der geier), und ich hätte es gar nicht benötigt. Das Script bleibt nun so, es werden noch kleine Veränderungen vorgenommen (pixelafrage mit identify ) und es dann so lassen.
Jedenfalls habe ich wieder was gelernt.
Dennoch war dieser Thread für mich sehr lehrreich und ich danke nochmals für die Mithilfe.
Grüsse Marco
Hallo Marco,
Marco Kammerer wrote:
Convert ist ein feines Tool, man kann viel verändern.
Bei einigen Formaten faehrst du mit "file" ganz gut, z.B.
jan@notebook:~/etes/home/html/pics > file blue_arrow.gif blue_arrow.gif: GIF image data, version 89a, 30 x 15,
Wenn du die Werte ganz am Schluss mit Perl/Sed/... verbastelst, sollte das ganz gut machbar sein. Allerdings kommt file nur mit einigen Formaten klar, JPEG schon nicht mehr. GIF und PNG hab ich AFAKI mal getestet.
Jan