#png #wasm-module #nbt #minecraft #map #graphics

bin+lib mc_map2png

这是一个 Rust 应用程序,可以将 Minecraft 地图数据从 NBT 格式转换为可视的 PNG 图像。此外,还提供了一个 WebAssembly 模块,用于在客户端进行图像转换。

1 个不稳定版本

0.1.0 2024 年 4 月 14 日

#448WebAssembly

MIT 许可证

42KB
295

Minecraft 地图到 PNG 转换器

这是一个 Rust 应用程序,可以将 Minecraft 地图数据从 NBT 格式转换为可视的 PNG 图像。此外,还提供了一个 WebAssembly 模块,用于在客户端进行图像转换。

Sample Image

功能

  • 将压缩的 Minecraft 地图 NBT 文件转换为 PNG 图像。
  • 适用于 WebAssembly 集成的基于直接内存的图像处理。
  • 高效的错误处理和有信息的错误消息。

演示网站

演示网站

我提供了一个网络界面,允许用户在其浏览器中直接将 Minecraft NBT 文件转换为 PNG 图像。

该网站使用 HTML 和 Tailwind CSS 进行样式设计。它具有简单的拖放界面用于文件上传、转换按钮,并显示结果 PNG 图像,然后可以下载。该网站完全在客户端运行,利用 WebAssembly 执行图像转换。

WebAssembly 使用

要使用 WebAssembly 模块,请在其网络应用程序中包含以下步骤

  1. 初始化 WASM 模块:首先,确保 WASM 模块已正确加载和初始化。这是通过从生成的 WASM 包中导入初始化函数和所需的具体函数来完成的。

    import init, { process_image_from_memory } from './path_to_wasm_package/mc_map2png.js';
    
    await init();
    
  2. 文件处理:通过将文件读取到 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));
    
  3. 显示图像:转换成功后,显示图像或适当地处理错误

    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.');
    }
    
  4. 下载选项:为用户提供下载生成的 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