使用 JAI 创建图像马赛克时出现问题

发布于 2024-08-31 03:59:11 字数 1080 浏览 7 评论 0原文

我正在尝试使用 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 个图像都位于同一位置马赛克的左上角,因此其他四分之三是空的。谁能告诉我如何选择构成马赛克的每张图片的位置,以便每张图片都出现在正确的位置?

谢谢伊恩

I'm trying to use JAI to create a single mosaic consisting of 4 TIF images each of which is 5000 x 5000. The code I have written is as follows ..

    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));

The problem is that all 4 images are being positioned in the same place in the top left hand corner of the mosaic so the other three quarters of it is empty. Can anyone tell me how I can choose the position of each picture that makes up the mosaic so each appears in the correct place ?

Thanks

Ian

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如此安好 2024-09-07 03:59:11

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,

northwest.tif 应具有 minX=5000 和 minY=0,

southwest.tif 应具有 minX=0、minY=5000,

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

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

无论如何,马赛克只是一个普通的合成操作。

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

I think you misunderstood the doc you need to set the minX minY for EACH source image before the operation.

northwest.tif should have minX=0 and minY=0,

northeast.tif should have minX=5000 and minY=0,

southwest.tif should have minX=0, minY=5000 and

southeast.tif should have minx=5000 and minY = 5000

In the doc they suggest you deserialize the files directly "moved" by using rendering hint on the deserialization operation.

Somehow, mosaic is just a normal compositing operation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文