AW: Stapelverarbeitung: RAW Konvertierung
Hallo!
zur Exif-Frage:
1. Einfachste Lösung:
Die Kamera arbeitet im Raw+jpg-Modus, d.h. es wird zu jedem Raw gleichzeiting ein jpg erzeugt. Letzteres darf qualitativ beliebig schlecht sein. Hauptsache die Exifs sind drin. Wichtig ist, dass das Begleit-jpg immer hübsch neben der Raw-Datei liegt. In diesem Fall enthält die von meinem Skript erzeugte jpg-Datei die Exifs ohne weiteres Zutun. (Kuni erwähnte es bereits. Ich habe mich gerade nochmal davon überzeugt). Die Tif-Datei wird dabei exiflos bleiben, leider.
All das gilt latürnich auch, wenn die Begleit-jpg-Datei nicht von der Kamera, sondern von einem x-beliebigen anderen Raw-Konverter erzeugt wurde.
2. Der Vorschlag, dcraw zur Extraktion der Exifs zu verwenden, bringt -- glaube ich -- nicht viel. Erstens kann dcraw nur die wichtigsten Exif-Tags (MakerNotes sind damit mit Sicherheit futsch), und zweitens habe ich nicht in der Hand, wie dcraw von FF angesprochen wird.
3. Der Vorschlag mit exiftool könnte ganz gut funktionieren, vorausgesetzt man ist willens andere Software neben FF zu dulden Ich habe mein Skript mal testweise verändert. Mit exiftool werden die Exifs aus der Raw-Datei sowohl in das jpg, als auch das tif-File geschrieben. Wer Lust und Zeit hat, darf gerne mal probieren.
Wichtig: Pfad zu exiftool anpassen. (Auf doppelte Backslashes achten.)
Hallo!
zur Exif-Frage:
1. Einfachste Lösung:
Die Kamera arbeitet im Raw+jpg-Modus, d.h. es wird zu jedem Raw gleichzeiting ein jpg erzeugt. Letzteres darf qualitativ beliebig schlecht sein. Hauptsache die Exifs sind drin. Wichtig ist, dass das Begleit-jpg immer hübsch neben der Raw-Datei liegt. In diesem Fall enthält die von meinem Skript erzeugte jpg-Datei die Exifs ohne weiteres Zutun. (Kuni erwähnte es bereits. Ich habe mich gerade nochmal davon überzeugt). Die Tif-Datei wird dabei exiflos bleiben, leider.
All das gilt latürnich auch, wenn die Begleit-jpg-Datei nicht von der Kamera, sondern von einem x-beliebigen anderen Raw-Konverter erzeugt wurde.
2. Der Vorschlag, dcraw zur Extraktion der Exifs zu verwenden, bringt -- glaube ich -- nicht viel. Erstens kann dcraw nur die wichtigsten Exif-Tags (MakerNotes sind damit mit Sicherheit futsch), und zweitens habe ich nicht in der Hand, wie dcraw von FF angesprochen wird.
3. Der Vorschlag mit exiftool könnte ganz gut funktionieren, vorausgesetzt man ist willens andere Software neben FF zu dulden Ich habe mein Skript mal testweise verändert. Mit exiftool werden die Exifs aus der Raw-Datei sowohl in das jpg, als auch das tif-File geschrieben. Wer Lust und Zeit hat, darf gerne mal probieren.
Wichtig: Pfad zu exiftool anpassen. (Auf doppelte Backslashes achten.)
Code:
//FFSubmenu=RAW
//FFName=Raw: Exif-schonende Umwandlung nach tif und jpg mit "Xe847"
//***************************************************
// Pfad zum exiftool: alle Backslashes müssen doppelt sein!!!!
//***************************************************
var exiftool = "\"C:\\Dokumente und Einstellungen\\mihatsch\\Desktop\\exiftool.exe\"";
//***************************************************
// Namensanhängsel für die zu speichernden Dateien
// Standardeinstellung: "Bild.raw" wird als "Bild-ff.tif" und "Bild-ff.jpg"
// gespeichert
//***************************************************
// Namenszusatz für die zu speichernde JPG-Datei
var jpgNamenszusatz = "-ff";
// Namenszusatz für die zu speichernde TIFF-Datei
var tifNamenszusatz = "-ff";
//***************************************************
// Ab hier geht es los ....
var fso = new ActiveXObject("Scripting.FileSystemObject");
var wsh = new ActiveXObject("WScript.Shell");
// Schleife über alle markierten Bilder
var imagenum = FF_GetImageCount();
for(var i = 0; i<imagenum ;i++) {
var path = FF_GetImageName(i);
var splitPath = SplitPath(path);
// Überspringen, was nicht nach Raw aussieht
if(splitPath.ext.toLowerCase() == ".jpg" ||
splitPath.ext.toLowerCase() == ".bmp" ||
splitPath.ext.toLowerCase() == ".png") {
continue;
}
// Bildname im Fortschrittsbalken anzeigen
FF_SetProgressText(i, imagenum, splitPath.file);
//***************************************************
// Raw-Bild laden und konvertieren.
//
// Der zweite Parameter ist eine Summe von
// 1 = Halbe Größe
// 2 = autom. Weißabgleich
// 4 = Kameraweißabgleich
// 8 = RGGB als 4 Farbe interpretieren
// 16 = Bild nach links drehen
// 32 = Bild nach rechts drehen
// 64 = Rauschunterdrückung
// 128 = Stuckpixelbeseitigung
//
// Bsp: "Automatischer Weißabgleich" + "RGGB als 4 Farbe interpretieren"
// + "Rauschunterdrückung" ->
// FF_LoadRawImage(path, 2 + 8 + 64, 2.0, 4.0, "")
//
// Die Parameter 3 und 4 sind nur bei aktiver Rauschunterdrückung (64) von Bedeutung (domain + range)
// Der letzte Parameter ist nur bei aktiver Stuckpixelbeseitigung (128) von Bedeutung (stuckfile)
//
// Vor V2.84 B42 gab es die Zusatzparameter noch nicht: FF_LoadRawImage(path, 4)
//
// Standardmäßig wird hier nur der Kameraweißabgleich verwendet:
//***************************************************
if (!FF_LoadRawImage(path, 4, 2.0, 4.0, "")) {
continue; // Raw-Konversion ist fehlgeschlagen, gehe zum nächsten Bild
}
//***************************************************
//***************************************************
// Bearbeitungen im 16-Bit-Modus
// standardmäßig wird hier Xe847 aufgerufen
//***** Ende der Raw-Konversion **************************
// Automatische Bildoptimierung mit Xe47
FF_Xe847Enhanced16(100, 100, 100, 100, 100, 0, 0, 0);
// Alternative 1: "Perfectly Clear"
//FF_PerfectlyClear16(true, true, 2, true, 95, true, 100, true, 100, true);
// Alternative 2: Kontrastautomatik
//FF_AutoContrast16();
// Alternative 3: Variante "Kuni"
// hier kommt eine leichte Aufhellung, die ich für meine Canon-CR2-Bilder
// brauche, um die Helligkeit eines Vergleichs-JPG zu erreichen
// FF_BrightUpDown16(595);
// Der S-Kontrast16 ist nötig, damit die Kamera-Kontrasteinstellung,
// die ich auf besonders gering gestellt habe, ein wenig kompensiert wird
// FF_SContrast16(0.65);
//***** Ende der 16-Bit-Bearbeitung************************
// Bild mit den obigen Korrekturen mit Namenszusatz als 16bit-Tiff speichern
var outTif = splitPath.dir + splitPath.file + tifNamenszusatz + ".tif"
FF_SaveImage16(outTif);
// Exifs aus der Raw-Datei lesen und in die tif-Datei schreiben
wsh.Run(exiftool + " -TagsFromFile \"" + path + "\" \"" + outTif + "\"", 4, true);
// Bild nach 8bit konvertieren
FF_Convert16();
//***************************************************
// Bearbeitungen im 8-Bit-Modus
// beispielsweise könnte man hier Schärfen.
//***************************************************
// volle Pulle Kanten schärfen
FF_SmartSharp(192, 16);
// Alternativ: Mittelstarkes 3D-Schärfen
// FF_3DSharp(70, 14);
// Auch 'ne Option: volle Pulle Schärfen durch Verformen
// FF_GeoSharp(512) ;
//***** Ende der 8-Bit-Bearbeitung*************************
// hier entsteht der neue Dateiname für das JPG
var outName = splitPath.dir + splitPath.file + jpgNamenszusatz + ".jpg";
// jetzt wird das JPG gespeichert
FF_SaveImage(outName, 97);
// Exifs aus der Raw-Datei lesen und in die jpg-Datei schreiben
wsh.Run(exiftool + " -TagsFromFile \"" + path + "\" \"" + outName + "\"", 4, true);
// Fortschritt melden
FF_SetProgress(i+1, imagenum)
}
// Zerteilt einen Bild-Dateinamen in sein Pfadbestandteile
function SplitPath(path) {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var result = new Object();
result.dir = fso.GetParentFolderName(path) + "\\";
result.file = fso.GetBaseName(path);
result.ext = "." + fso.GetExtensionName(path);
return result;
}
Zuletzt bearbeitet: