Crates.io | bmp8bit |
lib.rs | bmp8bit |
version | 0.1.0 |
source | src |
created_at | 2024-02-07 19:18:29.034882 |
updated_at | 2024-02-07 19:18:29.034882 |
description | Converts raster image to 256 colors format and writes it as bmp |
homepage | https://github.com/zelenyhleb/bmp8bit |
repository | https://github.com/zelenyhleb/bmp8bit |
max_upload_size | |
id | 1130855 |
size | 45,740 |
Popular image libraries written in Rust do not allow color table based bmps to be saved. This small crate extends image-rs so it is able to write Dynamic Image
as 256-colors BMP.
Theoretically it can write images with custom color tables, but I never tried it. See the Usage section for further details.
cargo build
If you use image-rs, usage is just:
use bmp8bit::{self, save_8bit_win};
let img: image::DynamicImage = somehow_acquired_image();
save_8bit_win(img, "out/img_8bit.bmp");
If your have your own raster image representation implemented, you'll need to implement Colors256
trait. It has two methods:
samples
is for converting your raster image representation to bytes vector using specified color table. This vector should contain the whole image. Use ColorTableSample::new
to convert your sample to color table sample and then ColorTable::convert
to acquire vector of bytes for your sample.size
just returns Dimensions
struct which describes your image width and height.You can find reference implementation in image_rs module.
Theoretically, Colors256::samples
using custom color table would also generate a valid bmp image. Needs some testing. windows_color_table can be taken as an example.
Apache License Version 2.0
I am not really good in Rust yet, so any issue reports, improvements, suggestions (even for code style) are appreciated.