想问下有没有数需jai的,自己因为业务需要要用jai来显示一些扩展后tiff 格式的图像,但是显示出来是空白,黑的,api看的也不是很有头绪,有没有熟悉的指点一下啊。
[b]问题补充:[/b]
[quote]你把你部分代码贴出来看一下呢,就是读取TIFF和draw TIFF相关代码[/quote]
[code="java"]
public Image render(InputStream is) {
PlanarImage resultImage = null;
SeekableStream seekableStream = SeekableStream.wrapInputStream(is,true);
ParameterBlock pb = new ParameterBlock();
pb.add(seekableStream);
resultImage = JAI.create("TIFF", pb);
Image image=resultImage.getAsBufferedImage();
return image;
}
public static void main(String[] args) {
final TestImage ti=new TestImage();
JFrame jf=new JFrame(){
FileInputStream fos;
@Override
public void paint(Graphics g) {
try {
fos=new FileInputStream("d:/kkgeotiffTest.tif");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.drawImage(ti.render(fos),0,0,this);
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
jf.setSize(500, 400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
[/code]
上面是主要代码
[b]问题补充:[/b]
[quote]numenzq[/quote]
首先感谢上面的兄台。
其实我这里一般的tiff也能显示出来,但是一些比较特殊的扩展后的tiff比如geotiff就显示不了了,我不知道这是什么原因[img][/img]
附件中是我测试的tiff
[b]问题补充:[/b]
http://kingxip.iteye.com/blog/424139
这是那个附件地址
1、我觉得你的geotiff文件还是有问题,我用其他geotiff文件都能正常打开,比如:
ftp://ftp.remotesensing.org/pub/geotiff/samples/other/erdas_spnad83.tif
你也可以大概比较一下二进制代码,你给我的那个tif文件几乎都是‘āāāāāāā’,而正常的geotif文件却不是这样的;
2、sun提供的JAI功能并不强大,你可以去geotiff官方去下载扩展的Jar包吧:
GeoTIFF-JAI and Extensible-TIFF-JAI: Niles Ritters projects for a Java GeoTIFF API.
http://sourceforge.net/projects/geotiff-jai/
http://sourceforge.net/projects/xtiff-jai/
如果你只是需要在JFrame里显示图像,不需要用到上面的Jar包都没问题,如果是要读取坐标或其他信息就需要它了,你在试一下吧。
你把你部分代码贴出来看一下呢,就是读取TIFF和draw TIFF相关代码。
我刚才把你贴出来的代码执行了一次,都能正常显示出TIF图片,你自己再确认一下呢;
1、我用的JAI版本是1.1.3,下载地址如下:
https://jai.dev.java.net/binary-builds.html
2、TIF格式有问题,JAI无法正常编码/解码;
3、确认一下图片是否太大,你的显示区域又太小,导致显示出来的图片只是一部分;