ZITAT(Dennis @ 27.05.2006 - 2:36) -cSchreibt die Daten in die Standardausgabe. Keine Ahnung, was man damit anfangen kann.[/quote]
Damit wird die Sache doch erst richtig spannend - jedenfalls für Kommandozeilen-Fans. :-)
Entsprechend alter Unix-Gepflogenheiten, daß es zwecks Erzielung minimaler Redundanz für jede separierbare Aufgabe nur ein dediziertes und genau für diesen Einsatzzweck optimiertes Tool geben soll, scheint DCRAW ja auch wirklich nur die Dekodierung zu beherrschen. Also muß man für alle "höheren Funktionen", die das Programm vielleicht komfortabler bedienbar, aber auch schwerer wartbar machen würden, auf andere externe Tools ausweichen. Eine Philosophie, die in der DOS/Windows-Welt nicht so verbreitet ist - dort wird eher erwartet, daß jedes Tool für sich alleine eine komplexe Aufgabe lösen kann und man sich nicht erst aus einer Kombination vieler kleiner Tools etwas für seinen Anwendungsfall Passendes zusammenstricken muß. Beides hat Vor- und Nachteile. (Ich benutze im folgenden DOS-Nomenklatur, aber das läßt sich praktisch 1:1 auf Unix übertragen.)
Eine sehr einfache Form, ein solches Tool mit seiner Umgebung kommunizieren zu lassen, ist es, die Ausgabe nicht in eine Datei zu schreiben, sondern an die Konsole (CON. Genau dafür ist der Parameter -c gedacht. Normalerweise sind die Eingabe der Konsole an die Tastatur und die Ausgabe an den Bildschirm gekoppelt, aber diese Zuordnung kann man aufheben und praktisch jedes andere logische Gerät ankoppeln. Um den Ausgabestrom (die sog. Standard-Ausgabe STDOUT) eines Programms abzufangen, benutzt man eine Ausgabeumleitung mit dem Operator '>'. Will man ein Programm mit simulierten Tastatureingaben füttern, bedient man sich der Eingabeumleitung mit dem Operator '<', um den Eingabestrom (die sog. Standard-Eingabe STDIN) umzuleiten. Beispiel:
1
2
3
4
DIR (Die Ausgabe von DIR erscheint auf dem Bildschirm)
DIR > dir.lst (Die Ausgabe von DIR wird in eine Datei namens DIR.LST umgeleitet.)
DIR > \dev\prn: (Die Ausgabe von DIR wird auf das Gerät PRN: umgeleitet -
das ist der Standarddrucker, der in der Regel an LPT1: gekoppelt ist.)
Erwartet ein konsolenorientiertes Programm normalerweise Eingaben von der Tastatur, so kann man diese auch in eine Textdatei schreiben und dem Programm per Eingabeumleitung "eingeben". Angenommen, KEYS.LST enthielte die notwendigen Eingaben, so wäre ein Aufruf einer Anwendung MYPROG wie folgt möglich:
1
MYPROG < keys.lst
Oder in Kombination (OLDLIST.TXT enthalte z.B. eine unsortierte Liste mit Telefonnummern, die zeilenweise sortiert werden müßte):
1
2
SORT < oldlist.txt (Ausgabe der sortierten Liste am Bildschirm)
SORT < oldlist.txt > newlist.txt (Umleitung der sortierten Liste in eine Datei)
SORT ist einer der bekannten sog. Filter unter DOS/Windows. Viele kennen vielleicht noch MORE, einen anderen solchen Filter, den man relativ häufig braucht, um die Ausgabe seitenweise auszugeben, sofern ein Programm dafür keine eigenen Kommandozeilenschalter vorsieht (meist /P).
Besonders interessant ist die Verwendung einer Kombination aus Ein- und Ausgabeumleitung ohne den Umweg über Zwischendateien, das sog. 'Pipen' (Tunneln) mit dem '|' Operator. Dabei wird die umgeleitete Ausgabe des einen Programms direkt als Eingabestrom des anderen Programms behandelt. Das läßt sich auch kaskadieren. Beispiel:
1
2
3
4
5
6
TYPE oldlist.txt | SORT
TYPE oldlist.txt | SORT > newlist.txt (wie oben, außer daß TYPE noch Formatierung bewirkt)
DIR | MORE
DIR | SORT
DIR | SORT | MORE
DIR | SORT > sortdir.lst
All sowas ist nun mit dem DCRAW -c Parameter möglich. Statt in eine Datei zu schreiben, gibt das Programm die Sachen einfach auf STDOUT aus. Diesen für Menschen wenig interessanten Ausgabestrom kann man abfangen und umleiten, z.B. in eine andersnamige Datei:
1
DCRAW -c infile.abc > outfile.xyz
Hier ein paar Beispiele vom Autor höchstselbst (http://www.cybercom.net/~dcoffin/dcraw/):
1
2
3
4
5
6
7
8
9
10
11
FAQ: Could you please add an option for TIFF / FITS / PNG / BMP / JPEG output?
No. Dcraw writes PPM only. To convert to other formats:
dcraw -c crw_0001.crw | pnmtotiff -truecolor > crw_0001.tiff
dcraw -c crw_0001.crw | pnmtofits > crw_0001.fits
dcraw -c crw_0001.crw | pnmtopng > crw_0001.png
dcraw -c crw_0001.crw | ppmtobmp > crw_0001.bmp
dcraw -c crw_0001.crw | cjpeg > crw_0001.jpeg
I used the Netpbm toolkit in these examples. ImageMagick also does command-line format conversions. Both are free.
Viele Grüße,
Matthias