我目前在运行时将 tiff 图像存储在 BufferredImage 中,并在 hmtl 的图像 src 标记中显示相同的图像。
我的 tiff 图像大小约为 60kb,目前在网络浏览器中加载大约需要 1 秒。
有什么方法可以压缩 tiff 图像或 BufferedImage 以便在浏览器中加载图像的时间更快。
下面是我在 BufferredImage 中保存 tiff 图像的代码。
public BufferedImage savetiff(File srcFilePath) throws IOException {
FileSeekableStream stream = new FileSeekableStream(srcFilePath);
TIFFDecodeParam decodeParam = new TIFFDecodeParam();
decodeParam.setDecodePaletteAsShorts(true);
ParameterBlock params = new ParameterBlock();
params.add(stream);
RenderedOp image1 = JAI.create("tiff", params);
BufferedImage img = image1.getAsBufferedImage();
return img;
}
将 tiff 转换为图像的代码,但在此代码中,我必须将 jpeg 图像保存在磁盘中,然后我必须再次读取它。如果有任何方法可以将 tiff 转换为 JPEG 并保存在 BufferedImage 中。
public boolean tiff2JPG(File srcFilePath, File destFilePath) {
boolean status = false;
SeekableStream s = null;
RenderedImage op = null;
ImageDecoder dec = null;
TIFFDecodeParam param = null;
FileOutputStream fos = null;
JPEGEncodeParam jpgparam = null;
ImageEncoder en = null;
try {
s = new FileSeekableStream(srcFilePath);
dec = ImageCodec.createImageDecoder("tiff", s, param);
op = dec.decodeAsRenderedImage(0);
fos = new FileOutputStream(destFilePath);
jpgparam = new JPEGEncodeParam();
jpgparam.setQuality(67);
en = ImageCodec.createImageEncoder("jpeg", fos, jpgparam);
en.encode(op);
status = true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.flush();
fos.close();
} catch (IOException io) {
// TODO Auto-generated catch block
io.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
return status;
请指教。
问候,
Dinesh Pise