【问题标题】:Tile Images for Zoom: How do I get to zoom level 10 without starting with an image that is 262,144?平铺图像缩放:如何在不从 262,144 图像开始的情况下达到 10 级缩放?
【发布时间】:2017-01-19 13:38:53
【问题描述】:

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

但是,我一开始就无法理解创建图像的最佳实践?似乎要实现 10+ 的缩放级别,我需要一个非常大的图像开始。尝试在 Adob​​e Illustrator 或 Photoshop 中执行此操作似乎是个坏主意? Illustrator 只能达到 16383 x 16833,而 Photoshop 会达到 262,144,但对我的 cpu 来说压力太大了。

到目前为止,我正在使用 Photoshop 的切片切片插件,这是一个缓慢的过程。

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

如果我需要从一个巨大的图像开始,有没有办法在 Photoshop 等程序之外放大我的图像?

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

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

-厄尔-

【问题讨论】:

  • 您要达到什么缩放比例? “缩放级别”为 10 表示缩放系数为 2^10 = 1024x。除非您的图像实际上是巨大的,否则这种比例没有多大意义。您的源图像是照片、航拍图像还是什么?
  • 嗯,我的第一个图像缩放级别是 256x256 我相信大多数瓷砖系统都是这样工作的?我可能是错的......所以当放大 8 倍时,我的最终结果是 65536。或者 256 个瓷砖 @ 256x256。所以我要切片的原始图像是65536x65536。图像的原始尺寸为我提供了可实现的最高缩放。 1024x1024 图像拆分为 256x256 平铺时仅允许进行 4 级缩放。
  • 如果您使用gdal2tiles(我假设是这样,根据您链接到的教程),您可以使用-z 选项指定开始和结束缩放级别,例如-z 10-18。这是你想要的吗?
  • 在代码中指定缩放级别对我来说很有意义。我的问题是首先生成“级别”。我不确定如何在不创建绝对巨大的图像的情况下生成高达 18 级的图像。这就是我试图弄清楚的。虽然我确实回去尝试弄乱 gdal python 脚本而不是我正在使用的 photoshop 插件,但我不知道如何安装 gdal-core 和绑定?
  • 现在正在尝试解决这个问题。看起来 python 脚本有一种方法可以在切片之前调整图像的大小。不知道这如何与分辨率一起工作......我想这就是我现在所处的位置?这有意义吗?

标签: image leaflet openlayers-3 tiles zooming


【解决方案1】:

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

gdal2tiles 是个好东西,可以做很多投影,但是对于简单的光栅平铺金字塔来说速度很慢并且需要大量内存。 dzsave 使用 RAM 更快、更高效。在这台带有 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

将以 5,000 DPI 渲染 ISO 校准图,生成 78740 x 47244 像素的图像。 vips 内存使用随图像宽度而变化,因此您需要大约 1.5gb 的内存来进行 10,000 DPI 渲染。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多