10

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

4

2 回答 2

13

开始的地方是文档存储库

从文档的登录页面上看并不是很明显,但核心类型imageImageBuffer.

new函数允许构建ImageBuffer具有给定/宽度的表示图像,存储给定类型的像素(例如RGB具有透明度的像素)。可以使用pixels_mut,get_pixel_mutput_pixel(后者pixels_mut在文档下方)之类的方法来修改图像。例如

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 作为起点特别有用,因为它包含示例,特别是它有一个以编程方式生成图像的示例。使用新库时,我将打开文档,如果感到困惑,我会打开专门用于查找示例的 repo。

于 2015-04-24T01:41:50.297 回答
5

由于@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();
}
于 2021-02-20T10:31:32.843 回答