wyrihaximus / tile-stitcher
🗺️ 瓦片拼图工具
dev-main
2024-09-06 05:43 UTC
Requires
- php: ^8.2
- intervention/image: ^3.6.4
- thecodingmachine/safe: ^2.5
Requires (Dev)
- ext-gd: ^8.2
- wyrihaximus/test-utilities: ^6.0.7
This package is auto-updated.
Last update: 2024-09-06 05:56:42 UTC
README
安装
要使用 Composer 安装,请使用以下命令,它将自动检测最新版本并将其与 ^
绑定。
composer require wyrihaximus/tile-stitcher
使用方法
拼图工具需要两个东西
- 瓦片尺寸,它假设它们都是相同的大小
- 要拼合的瓦片文件列表
<?php declare(strict_types=1); use Intervention\Image\Drivers\Gd\Driver; use Intervention\Image\ImageManager; use WyriHaximus\TileStitcher\Coordinate; use WyriHaximus\TileStitcher\Dimensions; use WyriHaximus\TileStitcher\FileLoader; use WyriHaximus\TileStitcher\Stitcher; use WyriHaximus\TileStitcher\Tile; $tiles = [ new Tile( new Coordinate(69, 69), new FileLoader('map/69_69.png'), ), new Tile( new Coordinate(70, 69), new FileLoader('map/70_69.png'), ), ]; $stitcher = new Stitcher( new ImageManager( new Driver(), ), ); $image = $stitcher->stitch( 'image/png', Map::calculate( new Dimensions(512, 512), ...$tiles, ), ); file_put_contents('output/two_tile.png', $image);
结果
高级
加载器
这个包的主要目标是取瓦片并将它们拼合成一个,因此所有与I/O相关的操作都没有在这个包中。然而,我们不能忽视这样一个事实,我们需要从某处加载瓦片图像。由于某些地图可能非常大,因此我们包含了 LoaderInterface
来执行读取I/O。这个包中包含了一个 FileLoader
,以提供最基本实现。(并且,嗯,不发布一个完全功能的包 😅。)
例如,这是一个使用 react/filesystem
的实现
use React\Filesystem\Node\FileInterface; use function React\Async\await; final readonly class ReactFileLoader implements LoaderInterface { public function __construct(private FileInterface $file) { } public function load(): string { return await($this->file->getContents()); } }
这是一个使用 Flysystem
解锁S3和一系列不同存储系统的示例
use League\Flysystem\Filesystem; final readonly class FLysystemFileLoader implements LoaderInterface { public function __construct(private Filesystem $filesystem, private string $path) { } public function load(): string { return $this->filesystem->read($this->path); } }
待办事项
-
Map::calculateMap
方法以计算结果地图图像的大小 -
Switcher::stitch
方法以将Map
拼合成图像 - 从渲染输出参数中拾取所需的图像格式,现在仅为PNG
- 支持指向目录并使用可调用来解析坐标拾取所有图像
- 切换到抽象层进行图像操作
- 通过提供加载器接口并以MIME类型输出结果图像来减少此包中的直接I/O
- 自动调整瓦片大小以符合所需的瓦片大小
许可
MIT 许可证 (MIT)
版权所有 (c) 2024 Cees-Jan Kiewiet
特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件的人进行上述操作,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他方式,源于、因之或与此软件或软件的使用或其他交易有关。