2013-07-08 45 views
10

Tôi cần chuyển đổi tệp tiff thành BufferedImage. Tôi đã viết mã sau đây:Chuyển tiff thành hình ảnh được đệm (Java)

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

Tôi biết chắc chắn myFile được khởi tạo chính xác: vấn đề là sau dòng thứ tư của mã img vẫn là null.

Tôi đang làm gì sai? Cảm ơn rất nhiều!

Sửa

Giải Quyết, tôi đã sử dụng đoạn mã sau:

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

myFile.canRead() trả lại là gì? [giữa dòng 3 và 4] – Burkhard

+0

@Burkhard, nó trả về true –

+0

@DanieleMilani Kiểm tra dòng sau in ra: 'System.out.println (Arrays.toString (ImageIO.getReaderFileSuffixes()));' Trên máy của tôi là '[bmp, jpg, jpeg, wbmp, png, gif]'. Không có 'tif'. – johnchen902

Trả lời

7

Bạn đang cố gắng để đọc một định dạng tập tin không được hỗ trợ bởi ImageIO.

Như johnchen902 chỉ ra, ImageIO.getReaderFileSuffixes() trả về danh sách các hậu tố được hỗ trợ. tiff không có trong danh sách đó. Đó là lý do tại sao bạn không thể đọc nó theo cách đó. Một số libaries bên ngoài có thể giúp bạn. Ví dụ: API hình ảnh nâng cao Java hỗ trợ TIFF. Chi tiết here.

+0

Cảm ơn bạn đã giải thích! Tôi gặp sự cố, tôi không thể truy cập liên kết ... –

+0

Liên kết đã được sửa. Xin lỗi vì chuyện đó. – Burkhard

+0

cảm ơn, tôi sẽ thử giải pháp này và báo cáo asap –