使用JAI创建图像拼接的问题

时间:2010-05-04 18:54:16

标签: java jai

我正在尝试使用JAI创建一个由4个TIF图像组成的单个马赛克,每个图像都是5000 x 5000.我编写的代码如下..

    RenderedOp mosaic=null;
    ParameterBlock pbMosaic=new ParameterBlock();
    pbMosaic.add(MosaicDescriptor.MOSAIC_TYPE_OVERLAY);
    RenderedOp in=null;
    // Get 4 tiles and add them to the Mosaic
    in=returnRenderedOp(path,"northwest.tif");
    pbMosaic.addSource(in);
    in=returnRenderedOp(path,"northeast.tif");
    pbMosaic.addSource(in);
    in=returnRenderedOp(path,"southwest.tif");
    pbMosaic.addSource(in);     
    in=returnRenderedOp(path,"southeast.tif");
    pbMosaic.addSource(in);
    // Setup the ImageLayout
    ImageLayout imageLayout=new ImageLayout(0,0,10000,10000);
    imageLayout.setTileWidth(5000);
    imageLayout.setTileHeight(5000);
    imageLayout.setColorModel(in.getColorModel());
    imageLayout.setSampleModel(in.getSampleModel());
    mosaic=JAI.create("mosaic",pbMosaic,new RenderingHints(JAI.KEY_IMAGE_LAYOUT,imageLayout));

问题是所有4张图像都位于马赛克左上角的同一位置,因此其他四分之三的图像都是空的。任何人都可以告诉我如何选择构成马赛克的每张图片的位置,以便每个图片都出现在正确的位置?

由于

伊恩

1 个答案:

答案 0 :(得分:1)

http://download.oracle.com/docs/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/MosaicDescriptor.html

我认为您误解了在操作之前为每个源图像设置minX minY所需的文档。

northwest.tif应该有minX = 0和minY = 0,

northeast.tif应该有minX = 5000和minY = 0,

southwest.tif应该有minX = 0,minY = 5000和

southeast.tif应该有minx = 5000和minY = 5000

在文档中,他们建议您通过在反序列化操作上使用呈现提示直接“移动”文件的反序列​​化。

不知何故,马赛克只是一种正常的合成操作。