1 个不稳定版本
0.1.0 | 2024 年 4 月 14 日 |
---|
#448 在 WebAssembly
42KB
295 行
Minecraft 地图到 PNG 转换器
这是一个 Rust 应用程序,可以将 Minecraft 地图数据从 NBT 格式转换为可视的 PNG 图像。此外,还提供了一个 WebAssembly 模块,用于在客户端进行图像转换。
功能
- 将压缩的 Minecraft 地图 NBT 文件转换为 PNG 图像。
- 适用于 WebAssembly 集成的基于直接内存的图像处理。
- 高效的错误处理和有信息的错误消息。
演示网站
我提供了一个网络界面,允许用户在其浏览器中直接将 Minecraft NBT 文件转换为 PNG 图像。
该网站使用 HTML 和 Tailwind CSS 进行样式设计。它具有简单的拖放界面用于文件上传、转换按钮,并显示结果 PNG 图像,然后可以下载。该网站完全在客户端运行,利用 WebAssembly 执行图像转换。
WebAssembly 使用
要使用 WebAssembly 模块,请在其网络应用程序中包含以下步骤
-
初始化 WASM 模块:首先,确保 WASM 模块已正确加载和初始化。这是通过从生成的 WASM 包中导入初始化函数和所需的具体函数来完成的。
import init, { process_image_from_memory } from './path_to_wasm_package/mc_map2png.js'; await init();
-
文件处理:通过将文件读取到 ArrayBuffer 中,然后传递此缓冲区到 WASM 函数来转换用户上传的文件
const fileInput = document.getElementById('fileInput'); const file = fileInput.files[0]; const arrayBuffer = await file.arrayBuffer(); const result = await process_image_from_memory(new Uint8Array(arrayBuffer));
-
显示图像:转换成功后,显示图像或适当地处理错误
if (result instanceof Uint8Array) { const blob = new Blob([result], {type: 'image/png'}); const url = URL.createObjectURL(blob); document.getElementById('outputImage').src = url; } else { console.error('Conversion failed.'); }
-
下载选项:为用户提供下载生成的 PNG 的选项
const downloadButton = document.getElementById('downloadButton'); downloadButton.onclick = () => { const link = document.createElement('a'); link.href = URL.createObjectURL(new Blob([result], {type: 'image/png'})); link.download = 'converted-image.png'; link.click(); };
安装
将仓库克隆到您的本地计算机
git clone https://github.com/masaishi/mc_map2png.git
cd mc_map2png
使用 Cargo 构建项目
cargo build --release
使用
要将 NBT 文件转换为 PNG 图像,请运行
cargo run --release -- <input_path> <output_path>
其中
<input_path>
是 Minecraft 地图 NBT 文件的路径。 (例如,map_0.dat
)<output_path>
是输出 PNG 文件的所需路径。 (例如,map_0.png
)
依赖项
~7MB
~102K SLoC