4 个稳定版本
1.2.0 | 2023年10月1日 |
---|---|
1.1.0 | 2023年4月8日 |
1.0.1 | 2022年9月13日 |
#240 in 图像
每月50次下载
在 blp-conv 中使用
145KB
3.5K SLoC
此crate提供了用于暴雪BLP纹理格式的解码/编码,该格式在多款游戏中使用,如魔兽III和魔兽世界。您可以将任何BLP文件加载到来自image crate的DynamicImage,并将任何DynamicImage保存为BLP文件。
使用方法
此crate位于crates.io,可以通过在项目的Cargo.toml中添加image-blp依赖项来使用。
[dependencies]
image-blp = "1"
示例:加载
此crate将BLP文件的加载分为解析和转换。这允许在不丢失信息的情况下处理BLP文件。通常,将BLP图像加载为可用的RGBA图像的过程如下
let blp_file = load_blp(blp_filename).expect("loaded blp");
let mipmap_level = 0;
let image = blp_to_image(&blp_file, mipmap_level).expect("converted");
请参阅examples/load.rs以获取完整代码。
示例:保存
此crate提供了一种简化的API来指定您想使用的BLP类型。有关更多信息,请参阅convert::BlpTarget类型。以下是将图像保存为的典型方式
let img_file: DynamicImage = Reader::open(input_filename)
.expect("open")
.decode()
.expect("decode");
let make_mipmaps = true;
let blp = image_to_blp(
img_file,
make_mipmaps,
BlpTarget::Blp1(BlpOldFormat::Raw1 {
alpha_bits: AlphaBits::Bit1,
}),
FilterType::Nearest,
)
.expect("converted");
save_blp(&blp, output_filename).expect("saved");
请参阅examples/save.rs以获取完整代码。
命令行工具
此库用于构建通用的命令行工具blp-conv,它允许将BLP格式转换为/从广泛的图像格式。您可以通过以下方式安装它
cargo install blp-conv
特性
此crate支持所有已知的BLP版本,如
BLP0
-- 用于旧的魔兽III ROC Beta构建。BLP1
-- 在魔兽III TFT中常见。BLP2
-- 在魔兽世界中使用。
该包装箱也支持所有已知的编码
RAW1
-- 256色的调色板图像。我们使用color_quant包将通用图像压缩成该格式。RAW3
-- 类似普通的RGBA位图。JPEG
-- 普通的jpeg压缩图像。DXTn
-- S3TC压缩算法,用于BLP2
版本。我们使用texpresso进行压缩/解压缩。
测试
该库的测试使用暴雪游戏的原文件。因此,由于许可问题,它们不能与库一起分发。您应该购买原版游戏以提取测试文件。
依赖项
~17MB
~139K SLoC