1 个不稳定版本

0.1.0 2019年8月23日

#819 in 图像

MIT 许可证

98KB
2K SLoC

rustbitmap

Build Status codecov
一个可以读取、写入和编辑位图文件的Rust库。

用法

将此添加到您的 Cargo.toml

[dependencies]
rustbitmap = "0.1.0"

入门

读取文件和创建位图

rust-bitmap 使得读取和编辑位图变得非常简单。要从一个文件中加载位图,只需传递文件字符串即可。还可以创建内存中的纯白位图。

extern crate rustbitmap;

use rustbitmap::BitMap;
use rustbitmap::Rgba;

fn main() {
    // load bitmap from file
    let bitmap = BitMap::read("example.bmp").unwrap();

    // create a new bitmap that is 24 pixels by 24 pixels
    let bitmap = BitMap::new(24, 24);

    // create 2 by 2 bitmap that is colored all black
    let pixels: Vec<Rgba> = vec![Rgba::black(), Rgba::white(), Rgba::white(), Rgba::black()];
    let bitmap = BitMap::create(2, 2, pixels).unwrap();
}

保存

保存位图同样非常简单。保存位图有两种选择,一种是尝试保存简化版本,另一种是保存默认的24位颜色版本。

extern crate rustbitmap;

use rustbitmap::BitMap;

fn main() {
   let bitmap = BitMap::new(24, 24);

   // the bitmap will be saved as a 24 bit image
   bitmap.save_as("24_bit_white_square.bmp").unwrap();
   
   // because the image is just a white square, it will be saved as a 1 bit image
   bitmap.simplify_and_save_as("1_bit_white_square.bmp").unwrap();
}

调整大小

您也可以通过使用各种不同的调整大小工具(如最近邻、双线性插值和双三次插值)来快速轻松地编辑位图的尺寸。使用不同的调整大小工具,我们可以创建非常酷的渐变。

extern crate rustbitmap;

use rustbitmap::{ BitMap, Rgba };

fn main() {
   let red = Rgba::rgb(255, 0, 0);
   let blue = Rgba::rgb(0, 0, 255);
   let green = Rgba::rgb(0, 255, 0);
   let white = Rgba::rgb(255, 255, 255);
   let pixels = vec![red, blue, green, white];
   let mut bitmap = Bitmap::create(2, 2, pixels).unwrap();
   bitmap.resize_by(100.0);
   bitmap.save_as("gradient.bmp").unwrap();
}

编辑

如果您想裁剪图像或将一个位图粘贴到另一个位图中,这非常简单。

fn main() {
   let mut bitmap = BitMap::new(24, 24).unwrap();
   let cropped = bitmap.crop(0, 0, 10, 10).unwrap();

   // cropped is not a new bitmap image that is 10 by 10 of the original bitmap
   // image starting at (0, 0)

   // let's recolor our original image using `fill`. Fill works just like the
   // paint bucket tool in most drawing applications.
   bitmap.fill_region(5, 5, Rgba::black()).unwrap();

   // now the entire original image is black, let's paste back in our cropped
   // image in a new position
   bitmap.paste
}

许可证

许可协议下 MIThttp://opensource.org/licenses/MIT

贡献

如果您想为此项目做出贡献,只需提出一个问题,说明您想添加的功能或遇到的错误。

无运行时依赖