我想学习Rust,并认为程序生成图像会很有趣。我不知道从哪里开始...... piston/rust-image?但即便如此,我应该从哪里开始呢?
答案 0 :(得分:6)
开始的地方是docs和the repository。
从文档的着陆页开始并不是很明显,但image
中的核心类型是ImageBuffer
。
new
function允许构建表示具有给定/宽度的图像的ImageBuffer
,存储给定类型的像素(例如RGB或with transparency) 。可以使用pixels_mut
,get_pixel_mut
和put_pixel
等方法(后者在文档中低于pixels_mut
)来修改图像。 E.g。
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();
}
看起来像:
repo作为起点特别有用,因为它包含示例,特别是它有an example以编程方式生成an image。使用新库时,我会打开文档,如果感到困惑,我们会专门寻找示例。
答案 1 :(得分:1)
由于@huon 的回答是 6 岁,我在重现结果时出错,所以我写了这个,
use 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();
}