用于缩放的平铺图像:如何在不使用262,144图像的情况下进行缩放级别10?

时间:2017-01-19 13:38:54

标签: image leaflet openlayers-3 tiles image-zoom

我正在尝试为网络显示创建一个可缩放的图像,并且遇到了多个来源以使其工作;传单,openlayers等我已经看过并遵循了一些很好的教程。 Pedro's

但是,我首先要了解创建图像的最佳做法?似乎要实现10+的缩放级别,我需要一个非常大的图像开始。尝试在Adobe Illustrator或Photoshop中执行此操作似乎是一个坏主意? Illustrator只能达到16383 x 16833,而photoshop将会达到262,144,但对我的cpu来说太过紧张了。

截至目前,我正在使用一个用于photoshop的瓷砖切片插件,这是一个很慢的过程。

我的问题是:从巨大的图像开始,是获得更高缩放级别的最佳方法吗?或者有没有办法切片图像,然后切片图像的切片?

如果我需要从一个巨大的图像开始,有没有办法在像photoshop这样的程序之外升级我的图像?

如果我可以切片最好的方法是什么?

非常感谢你的帮助和时间,非常感谢!

-earl -

1 个答案:

答案 0 :(得分:0)

是的,你需要从一个巨大的图像开始。如果您的源是矢量绘图,您可以保存为PDF或SVG之类的东西,并在另一个程序中执行高分辨率渲染。请参阅下面的示例。

gdal2tiles是一件好事,可以做很多投影,但对于简单的栅格平铺金字塔来说它很慢并且需要大量内存。 RAM dzsave速度更快,效率更高。在这台带有25k x 25k RGB JPG文件的笔记本电脑上,我看到了:

$ time gdal2tiles.py -p raster ../wac_nearside.jpg x
Generating Base Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.
Generating Overview Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.
real    3m51.728s
user    3m48.548s
sys 0m2.992s
peak memory 400mb

但是dzsave我看到了:

$ time vips dzsave ../wac_nearside.jpg y --suffix .png
real    0m36.097s
user    1m39.900s
sys 0m6.960s
peak memory 100mb

它会更快,但几乎所有的时间都花在PNG写上。 dzsave也会自动为您进行居中,因此无需额外的gdal_translate步骤。

与JPG文件一样,vips可以使用比例因子加载PDF和SVG。例如:

$ time vips dzsave ../ISO_12233-reschart.pdf[dpi=5000] y --suffix .png
real    3m11.029s
user    8m58.520s
sys 0m35.504s
peak memory 850MB

将ISO校准图表渲染为5,000 DPI,生成78740 x 47244像素的图像。 vips内存使用具有图像宽度的比例,因此对于10,000 DPI渲染,您需要大约1.5gb的ram。