[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Frage zu convert aus imagemagick und Dateinamen



On Tue, Feb 14, 2006 at 10:39:49AM +0100, Gebhard Dettmar wrote:
> Natürlich habe ich mir die angeguckt - und eben nur diesen "Singular-Fall" 
> gesehen, der in der Realität wohl nie auftritt - jedenfalls nicht bei 
> thumbnails. 

Da unterscheiden sich Deine und meine Realitaet aber gewaltig. Ich
konvertiere sehr haeufig ein File nach dem andern in einer Schleife. Und
das, was da gemacht werden soll, habe ich einfach in ein Shellscript
gepackt, dass ich mit den Input-Images als Parameter aufrufe.

> Und da er mehrere input-files mit *jpg nimmt, wäre nur noch 
> die Frage, wie die Outputfiles zu bestimmen sind (ohne for, pipes etc.). 

Nein, es waere zu klaeren, was denn die Semantik bei multiplen Input-Files
ist. ImageMagick wird ziemlich komplex, wenn man mit multiplen Inputs
arbeitet und die Dokumentation ist da tatsaechlich nicht immer so
hilfreich.

Ich weiss nicht, welche Version Du verwendest. Ist aber auch nicht so
wichtig. Nur: in der aktuellen Version 6 ist die Verarbeitung der
Kommandozeile konsistent gemacht worden, was vorher nicht der Fall war.
Siehe unten.

> Was passiert, wenn man keine angibt, habe ich in der letzten Mail 
> geschildert - jedenfalls nicht "Missing output-file name" o.s.ä. - die 
> Manpage ist da also unvollständig.

Jein. Convert ist ein sehr komplexes Kommando, das u.a. auch Animationen
erzeugen kann. Und Filenamen mit einem Index in eckigen Klammern deuten IMO
darauf hin, das er aus irgend einem Grund "Subimages" fuer Animationen
erzeugt. Ich vermute mal (geraten) das das Zwischenfiles sind, die convert
erzeugt dann aber nicht weiter verarbeitet, weil kein entsprechender
Operator folgt.

Wenn Du "convert -help" aufrufst, wirst Du folgendes sehen:

  Usage: convert [options ...] file [ [options ...] file ...] [options ...] file
  ...

was uns allerdings auch nicht so richtig weiter hilft ;-0 Die Files
koennten hier, je nach Option, horizontal oder vertikal hintereinander
geklebt werden oder in ein animiertes GIF gepackt werden. Was jetzt eine
Option macht, naemlich Dein -resize, wenn danach mehrere Images angegeben
werden, steht nicht in der Manpage.

Seit der Version 6 sieht ImageMagick Postfix-Operatoren vor, also

  command image1 -operator1 image2 -operator2 ...  out-image

und es arbeitet Prefix-Operatoren

  command -operator image1 out-image

momentan noch als Legacy-Kommando ab.

Tip: bei Anthony Thyssen findest Du sehr gute Anleitungen, vor allem unter
"basics" Hinweise auf die Probleme der Abbarbeitung der Kommandozeile in
frueheren Versionen und der bereinigten Logik in Version 6:

http://www.cit.gu.edu.au/~anthony/graphics/imagick6/
http://www.cit.gu.edu.au/~anthony/graphics/imagick6/basics/

Und hier findest Du die offiziellen Manpages zu ImageMagick6:

http://www.imagemagick.org/script/convert.php
http://www.imagemagick.org/script/command-line-processing.php

> Aber das hab ich doch gemacht (nur unschöner). Mach dir mal einen 
> Testordner mit 5 jpgs, dann wirst du sehn, dass convert dir nur 4 
> thumbnails fabriziert und das muss irgendwas mit der Verarbeitung durch 
> die bash zu tun haben.

Ja, passiert bei mir auch. Nein, es ist convert, dass nur vier Thumbnails
produziert, das hat nichts mit der Bash zu tun.

Ich verstehe nicht, was Dich an der for-Schleife stoert. Es muss wirklich
nicht immer alles in einer Zeile stehen. Das ist oft ein Zeichen von Sturm
und Drang, selten aber von ordentlicher Software. ;-)

> Hmm, sorry, ich frag vorsichtshalber noch mal nach: ${f} müsste gleich $f 
> sein und ${f%...} ist das " shortest matching  pattern (the  ``%'' case)", 
> das du benutzt, damit du -t (oder -thumb oder was auch immer) zwischen 
> Namen und Endung setzen kannst?

Ja, %, %%, #, und ## sind Operatoren innerhalb der geschweiften Klammern,
mit denen man Prefixe oder Suffixe von Strings entfernen kann. Und
Hilfsvariablen wie $g sind kein Umweg, sondern machen Scripts oft
uebersichtlicher.

Zu convert noch einen Tip: 

convert -size 100x100 image1 -resize 100x100 +profile '*' ...

Das -size sagt dem JPG-Parser, dass er nicht mit voller Aufloesung beim
Lesen des Inputfiles arbeiten muss, das +profile loescht das EXIF-Profile
des Inputfiles (sofern vorhanden), das sonst ggf. mit im Thumbnail landet
und es unnoetig vergroessert.

	--jc

-- 
  In zweifelhaften Fällen entscheide man sich für das Richtige.
	-- Karl Kraus (1874-1936) 



Reply to: