我想学习Rust编程语言,打算用它来生成图像。但是我不知道从哪里开始......piston/rust-image?即使使用这个库,我也不知道该从哪里开始。
我想学习Rust编程语言,打算用它来生成图像。但是我不知道从哪里开始......piston/rust-image?即使使用这个库,我也不知道该从哪里开始。
image
中的核心类型是ImageBuffer
。
new
函数允许构造一个ImageBuffer
表示具有给定宽度的图像,存储给定类型(例如RGB或具有透明度)的像素。可以使用诸如pixels_mut
, get_pixel_mut
和put_pixel
等方法来修改图像。例如:
extern crate image;
use image::{ImageBuffer, Rgb};
const WIDTH: u32 = 10;
const HEIGHT: u32 = 10;
fn main() {
// a default (black) image containing Rgb values
let mut image = ImageBuffer::<Rgb<u8>>::new(WIDTH, HEIGHT);
// set a central pixel to white
image.get_pixel_mut(5, 5).data = [255, 255, 255];
// write it out to a file
image.save("output.png").unwrap();
}
它看起来像这样:
这个代码库特别有用作为一个起点,因为它包含了一些示例,尤其是它有一个示例可以编程生成一张图片。当我使用新的库时,我会打开文档,如果困惑,就会去查找这个代码库中的示例。
注意:
get_pixel_mut
从0.24.0版本开始已被弃用:请改用get_pixel和put_pixel。
ImageBuffer
需要两个参数:像素类型和容器来存储它。您应该改为,例如,let mut image = ImageBuffer::<Rgb<u8>, Vec<u8> >::new(WIDTH, HEIGHT);
- Monthimage 0.15.0
的 .save()
函数时出现了“期望2个参数”的错误提示。我无法让这个函数正常工作。我还尝试了 image.save("out.png", image::PNG)
和 image.save(&Path::new("out.png), image::PNG)
,但都不行 :( - Niklas Ruse image::{ImageBuffer, RgbImage};
const WIDTH:u32 = 10;
const HEIGHT:u32 = 10;
fn main() {
let mut image: RgbImage = ImageBuffer::new(WIDTH, HEIGHT);
*image.get_pixel_mut(5, 5) = image::Rgb([255,255,255]);
image.save("output.png").unwrap();
}
ImageBuffer
的更改冲突,最好直接构造RgbImage
实例:
let mut image: RgbImage = RgbImage::new(WIDTH, HEIGHT);
- Kaplan