2013-07-08 10 views
10

Ich muss eine TIFF-Datei in ein BufferedImage konvertieren. Ich schrieb den folgenden Code:Konvertieren eines TIFF in ein gepuffertes Bild (Java)

String filepath = "C:\\tiffFolder\\"; 
String filename = "myTiffImage.tif"; 
File myFile = new File (filepath + filename); 
BufferedImage img = ImageIO.read(myFile); 

Ich weiß sicher, myFile richtig instanziiert wird: das Problem ist, dass nach der vierten Zeile des Codes img noch null ist.

Was mache ich falsch? Vielen Dank!

bearbeiten

gelöst, habe ich den folgenden Code:

FileSeekableStream stream = new FileSeekableStream(filepath + filename); 
TIFFDecodeParam decodeParam = new TIFFDecodeParam(); 
decodeParam.setDecodePaletteAsShorts(true); 
ParameterBlock params = new ParameterBlock(); 
params.add(stream); 
RenderedOp image1 = JAI.create("tiff", params); 
BufferedImage img = image1.getAsBufferedImage(); 
+0

Was gibt myFile.canRead() zurück? [zwischen Zeile 3 und 4] – Burkhard

+0

@Burkhard, es gibt true zurück –

+0

@DanieleMilani Überprüfen Sie, was die folgende Zeile ausgibt: 'System.out.println (Arrays.toString (ImageIO.getReaderFileSuffixes()));' Auf meinem Computer es ist '[bmp, jpg, jpeg, wbmp, png, gif]'. Kein 'Tif'. – johnchen902

Antwort

7

Sie versuchen, ein Dateiformat zu lesen, die nicht von ImageIO unterstützt wird.

Wie Johnchen902 darauf hingewiesen, gibt die ImageIO.getReaderFileSuffixes() eine Liste der Suffixe, die unterstützt werden. Tiff ist nicht in dieser Liste. Deshalb kannst du es nicht so lesen. Einige externe Bibliotheken können Ihnen helfen. Zum Beispiel: Die Java Advanced Imaging API unterstützt TIFF. Details here.

+0

Danke für die Erklärung! Ich habe ein Problem, ich kann den Link nicht erreichen ... –

+0

Link behoben. Das tut mir leid. – Burkhard

+0

danke, ich werde diese Lösung versuchen und melden Sie so bald wie möglich –