Laden...

MultiTiff aus einzelnen Tiff-Dokumenten erstellen

Erstellt von JCDenton vor 16 Jahren Letzter Beitrag vor 16 Jahren 4.164 Views
JCDenton Themenstarter:in
73 Beiträge seit 2007
vor 16 Jahren
MultiTiff aus einzelnen Tiff-Dokumenten erstellen

Ist es in C# möglich eine einzige Multitiff-Datei aus mehreren einzelnen Tiff-Dateien zu erzeugen (eine virtuelle Heftklammer)? Gibt es eine einfache Lösung?

in etwa so:

MakeMultiTiff(TiffPfadArray[])
49.485 Beiträge seit 2005
vor 16 Jahren

Hallo JCDenton,

gehen tut es wohl schon mal:

TIFFDateien können Bilder mit einer beliebigen Anzahl an Bits pro Pixel speichern und eine Vielzahl von Komprimierungsalgorithmen verwenden.** Mehrere Bilder können in einer einzigen, mehrseitigen TIFFDatei gespeichert werden.**

Du solltest mal in Richtung ImageCodecInfo.GetImageEncoders und EncoderParameter(s) suchen.

herbivore

JCDenton Themenstarter:in
73 Beiträge seit 2007
vor 16 Jahren

Ich habe etwas gehackt...

EncoderParameters encParamsMulti = new EncoderParameters(2);
EncoderParameters encParamsAddFrame = new EncoderParameters(1);
EncoderParameters encParamsCloseFrame = new EncoderParameters(1);

Encoder encCompress = new Encoder(Encoder.Compression.Guid);
Encoder encSave = new Encoder(Encoder.SaveFlag.Guid);

encParamsMulti.Param[0] = new EncoderParameter(encCompress, Convert.ToByte(EncoderValue.CompressionCCITT4));
encParamsMulti.Param[1] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.MultiFrame));
encParamsAddFrame.Param[0] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.FrameDimensionPage));
encParamsCloseFrame.Param[0] = new EncoderParameter(encSave, Convert.ToByte(EncoderValue.Flush));

imgMulti.Save(@"C:\MultiTiff.tif", GetCodecInfo("image/tiff"), encParamsMulti);

...bekomme aber in der letzten Zeile (imgMulti.Save) eine Fehlermedlung ("Ungültiger Parameter"). Die ersten beiden Parameter sollten richtig sein.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo JCDenton,

eine Fehlermedlung ("Ungültiger Parameter")

gibts die noch genauer?

Compilerfehler oder Exception?

herbivore

JCDenton Themenstarter:in
73 Beiträge seit 2007
vor 16 Jahren

"Ungültiger Parameter" ist die Exception, leider!

Wenn ich in der 5. Zeile meines Codes (siehe letzter Beitrag) so ändere:

Encoder encCompress = new Encoder(Encoder.Quality.Guid);

Also Quality statt Compression, dann kommt der Fehler ("Ungültiger Parameter") nicht, aber er bringt dann bei SaveAdd (oben im Code nicht enthalten, aber siehe unten) den Fehler "Allgemeiner Fehler in GDI+". Die MultiTiff-Datei ist da, aber nur die erste Seite (die Dateigröße ist aber größer, als die des Originals).

imgMulti.SaveAdd(Image.FromFile(@"C:\EinzelTiff2.tif"), encParamsAddFrame);

Durch die magere Exception kann man (ich) da nicht viel erkennen! Man kann auch einige Encoderwerte beliebig variieren und es kommt immernoch "Allgemeiner Fehler in GDI+".

1.274 Beiträge seit 2005
vor 16 Jahren

Ich wärme den Thread nochmal auf, ich hab die Lösung gefunden, du darfst daraus keinen Byte Wert machen sondern ihn nach Long casten

Liebe Grüße
LastGentleman

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein