#convert-images #image #tile #cli #generate #format #multires

bin+lib image2multires

从图像生成多分辨率瓦片

2 个版本

0.1.1 2024年2月13日
0.1.0 2024年2月10日

#43 in #convert-images

MIT/Apache

15KB
192 代码行

该程序将单个图像转换为多分辨率瓦片格式。

本作品受到了 Pannellum (https://github.com/mpetroff/pannellum) 和 dzi (https://github.com/n-k/dzi) 项目的启发。

通常用于将立方体贴图转换为瓦片。在这种情况下,图像是正方形,但此工具是通用的,可以用于矩形形状的图像。

我选择了一个执行单一操作的工具。因此,它不会操作六个面,也不会为任何全景查看器生成配置文件。为此,您可以使用自己的脚本。在 scripts 目录中提供了一个示例 shell 脚本 cube2tiles.sh

我没有找到关于多分辨率瓦片格式的规范。您可以在测试目录中找到 Python 脚本 generate.py。它来自 Pannellum 项目。这是一个修改后的原始脚本:删除了从等经纬度到立方体贴图的转换。

用法

Generate multires tiles from an image

Usage: image2multires [OPTIONS] [image]

Arguments:
  [image]

Options:
  -p, --png                    Set tile image format to png instead of default jpg
  -s, --tilesize <tile-size>   Set tile image size [default: 512]
  -d, --directory <directory>  Set output directory of tile image files [default: output]
  -h, --help                   Print help
  -V, --version                Print version

一般背景或工作流程

我生成全景的工作流程如下:

  1. 将图像拼接成等经纬度图像;
  2. 将等经纬度图像转换为6个立方体贴图;
  3. 对下方的图像进行一些修改,以获得一个没有异物、伪影或空洞的底面;
  4. 从立方体贴图中生成瓦片。这是此程序运行的地方;
  5. 删除原始等经纬度图像。

已知问题

可能会出现以下错误:

Unsupported source image: invalid code in LZW stream

这是由底层库引起的。我能提出的唯一解决方案是打开图像并保存它。

参见问题 https://github.com/image-rs/image-tiff/issues/191

依赖关系

~6.5MB
~93K SLoC