如何使用锈图像在程序上生成图像?

时间:2015-04-24 00:43:40

标签: image rust procedural

我想学习Rust,并认为程序生成图像会很有趣。我不知道从哪里开始...... piston/rust-image?但即便如此,我应该从哪里开始呢?

2 个答案:

答案 0 :(得分:6)

开始的地方是docsthe repository

从文档的着陆页开始并不是很明显,但image中的核心类型是ImageBuffer

new function允许构建表示具有给定/宽度的图像的ImageBuffer,存储给定类型的像素(例如RGBwith transparency) 。可以使用pixels_mutget_pixel_mutput_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();
}

看起来像:output

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();
}