Mehrseitige Tiff schreiben mit JAI

boeser_micha

Grünschnabel
Grüße,

ich habe ein Problem bezüglich Schreiben von mehreren (einseitigen) Tiff in eine Tiff –Datei via
JAVA Image I/O (installiert in der Version 1.1x). Ich lese ganz einfach 2 Tiff und versuche diese in ein neues Tiff zu schreiben. Öffne ich das erzeugte Tiff, sehe ich, dass es zwei Seiten beinhaltet. Ich habe das Tiff mit zwei unterschiedlichen Werkzeugen geöffnet. Beim ersten Werkzeug erhalte ich die Fehlermeldung „Das Format ist ungültig oder wird nicht unterstützt“ sobald ich auf die zweite Seite wechseln möchte, und beim zweiten Werkzeug (IrfanView) wird nur eine schwarze Seite angezeigt nach Wechsel auf zweite Seite. Wenn ich dann wieder auf die erste Seite wechseln möchte erschein „no Picture“.

Hat jemand eine Ahnung was ich falsch mache ? Oder ein lauffähiges Beispiel? Oder möglicherweise eine Alternative ?

Anbei ein wirklich simples Beispiel-Programm mit dem ich das Schreiben getestet habe.

Vielen Dank :-)
Micha

package de.wueba.tiffWriter;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream;



public class TiffWriter {

/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
int firstPageNo = 1;
int lastPageNo = 2;

FileOutputStream fos_debug = new FileOutputStream ( "c:/isra/" + "debug.tif");

try {
byte [] data = null;

ImageWriter writer = (ImageWriter) ImageIO.getImageWritersByFormatName("tiff").next();
ImageOutputStream ios;
ByteArrayOutputStream out = new ByteArrayOutputStream( );
ios = ImageIO.createImageOutputStream(out);
writer.setOutput(ios);

File bmpfile = new File("c:/isra/adac.tif");
BufferedImage bimage1 = ImageIO.read(bmpfile);
File bmpfile2 = new File("c:/isra/adac2.tif");
BufferedImage bimage2 = ImageIO.read(bmpfile2);
IIOImage ioimage1 = new IIOImage(bimage1, null, null);
IIOImage ioimage2 = new IIOImage(bimage2, null, null);

writer.write(null, ioimage1, null);
if (writer.canInsertImage(1)) {
writer.writeInsert(1, ioimage2, null);
} else {
System.err.println("Writer can’t append a second image!");
}

ios.flush();
fos_debug.write(out.toByteArray());
fos_debug.close();

writer.dispose();
ios.close();

} catch (Exception ex)
{ ex.printStackTrace();
}

}

}
 
Zurück