#bmp #image #8-bit #image-rs #256colors

bmp8bit

将位图图像转换为256色格式,并以bmp格式写入

1个不稳定版本

0.1.0 2024年2月7日

#771 in 图像

自定义许可证

28KB
470

bmp8bit

Rust编写的流行图像库不允许保存基于颜色表的bmp。这个小crate扩展了image-rs,使其能够将Dynamic Image作为256色BMP写入。

理论上它可以写入带有自定义颜色表的图像,但我从未尝试过。有关更多详细信息,请参阅使用部分。

构建

cargo build

使用方法

如果你使用image-rs,使用方法如下

use bmp8bit::{self, save_8bit_win};
let img: image::DynamicImage = somehow_acquired_image();
save_8bit_win(img, "out/img_8bit.bmp");

你自己的位图图像表示

如果你实现了自己的位图图像表示,你需要实现Colors256特质。它有两个方法

  • samples用于将你的位图图像表示转换为使用指定颜色表的字节数组。这个数组应该包含整个图像。使用ColorTableSample::new将你的样本转换为颜色表样本,然后使用ColorTable::convert获取样本的字节数组。
  • size仅返回描述你的图像宽度和高度的Dimensions结构。

你可以在image_rs模块中找到参考实现。

自定义颜色表

理论上,使用自定义颜色表的Colors256::samples也会生成有效的bmp图像。需要一些测试。windows_color_table可以作为示例。

许可证

Apache许可证第2版

贡献

我还不擅长Rust,所以任何问题报告、改进、建议(甚至代码风格)都受到欢迎。

依赖关系

~5.5MB
~69K SLoC