我想写的MapViewer,我必须工作大地图图像文件的小瓷砖和有需要平铺的大图像,现在的问题是平铺大图像小砖(250×250像素或这样尺寸) 等等,我用ImageMagic程序做,但有问题 现在是其他任何编程方法或应用程序,就平铺? 我可以用JAI做到这一点在Java中?如何?

有帮助吗?

解决方案

您是否尝试过做它在Java自己吗?我试图与(警告,大图像,可能会崩溃您的浏览器,使用“另存为...”)的此图片。需要有额外的存储运行虽然(-Xmx400M)。

public class ImageTile {
    public static void main(String[] args) throws IOException {
        Dimension tileDim = new Dimension(250, 250);
        BufferedImage image = ImageIO.read(new File(args[0]));

        Dimension imageDim = new Dimension(image.getWidth(), image.getHeight());

        for(int y = 0; y < imageDim.height; y += tileDim.height) {
            for(int x = 0; x < imageDim.width; x += tileDim.width) {

                int w = Math.min(x + tileDim.width,  imageDim.width)  - x;
                int h = Math.min(y + tileDim.height, imageDim.height) - y;

                BufferedImage tile = image.getSubimage(x, y, w, h);
                ImageIO.write(tile, "JPG", new File("tile-"+x+"-"+y+".jpg")); 
            }
        }
    }
}

其他提示

有关的大尺寸图像像你这样,你将是最好的JPEG文件的无损编辑服务。这不仅是更快,因为不需要图像不被渲染,但是它也保留质量,因为图像没有再压缩。

无损编辑上的块的作品,通常16像素正方形。虽然限制对某些应用,这似乎是一个非常适合的映射。你可以通过实现图像无损首先要裁剪大小的块,在不同的缩放级别平铺。 (这是快速高效的,因为图像不会被渲染。)这给你的瓷砖全变焦。要创建变焦的较低水平,结合2x2的瓷砖和扩展这些降低到1瓦的大小。下一级采用4x4片和8x8等,每次缩小一瓦。而此时区块的个数beecomes太大某些时候,你可以选择使用缩放瓷砖作为基础资源。例如,在变焦8级,这将需要256×256瓷砖。这可能是太多处理,这样你就可以使用16×16瓦的缩放级别4。

维基百科对无损编辑详情,并链接到一些实施库。

ImageMagick的不使用平铺 -tile 。它更多的图像的repitition的,但可能是有用的ESP。因为您选择已经在使用它。但是如果你的意思是生成无缝拼接我不知道如果ImageMagick的能做到这一点或没有。

GDAL 带有一个脚本调用gdal2tiles.py,你想要做的事情,包括格式化砖与使用谷歌地图,的OpenLayers等

有似乎 GDAL2Tiles 的较新的版本,以及。

怎么样 megatexture 与一个R-tree以便高效地访问?显然,它可以使用图像128000x128000像素。

JAI是与平台相关的,似乎像今天死的项目。

我建议使用开放源程序的 ImageMagick的 即可。虽然它是依赖于平台,它可用于同一平台,JAI,但全社会的支持。

约约ImageMagick的放大图诀窍是用它的“”指令,而不是的转换命令。流只读取所述图像的相关部分,并保存所提取的部分作为原始数据。然后,您需要“转换”的小原始数据保存为JPEG。

实施例,从尺寸为800x600的large.jpeg从位置保存为0x0瓦片到tile.jpeg:

    stream -extract 800x600+0+0 large.jpeg tile.rgb

    convert -depth 8 -size 800x600 rgb:tile.rgb tile.jpeg

(当运行在Windows,一定要使用ImageMagick的CONVERT.EXE,因为有一个Windows命令名为 “转换”。)

当用TIFF图像工作只,apache的 Sanselan 可以是正确的选择 - 这是一个纯Java成像库。此外,JAI似乎包含为TIFF的平台独立的编解码器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top