如何使用rust image按程序生成图像?

如何使用rust image按程序生成图像?,image,rust,procedural,Image,Rust,Procedural,我想学习Rust,并认为按程序生成图像会很有趣。我不知道从哪里开始?但即便如此,我应该从哪里开始呢?开始的地方是和 从文档的登录页上看,这并不明显,但是image中的核心类型是 允许构造一个ImageBuffer,表示具有给定/宽度的图像,存储给定类型(例如或该类型)的像素。您可以使用诸如get_pixel_mut和put_pixel(后者在文档中位于pixels_mut下方)之类的方法来修改图像。例如 外部板条箱图像; 使用图像::{ImageBuffer,Rgb}; 常数宽度:u32=10;

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

开始的地方是和

从文档的登录页上看,这并不明显,但是
image
中的核心类型是

允许构造一个
ImageBuffer
,表示具有给定/宽度的图像,存储给定类型(例如或该类型)的像素。您可以使用诸如
get_pixel_mut
put_pixel
(后者在文档中位于
pixels_mut
下方)之类的方法来修改图像。例如

外部板条箱图像;
使用图像::{ImageBuffer,Rgb};
常数宽度:u32=10;
常数高度:u32=10;
fn main(){
//包含Rgb值的默认(黑色)图像
让mut image=ImageBuffer:::新建(宽度、高度);
//将中心像素设置为白色
image.get_pixel_mut(5,5).data=[255,255,255];
//把它写进一个文件
image.save(“output.png”).unwrap();
}
这看起来像:


repo作为一个起点特别有用,因为它包含示例,特别是它具有编程生成的功能。当使用新库时,我会打开文档,如果混淆了,还会打开repo专门查找示例。

因为@huon answer已经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();
}

顺便说一句,如果问题是具体的,例如包括,以及您感到困惑/迷茫的地方,例如,可能您不知道如何安装库,可能您不确定如何创建要修改的图像,那么这些问题将得到更好的答案(因此对您更有帮助)。我在回答中假设了后者,但我不确定!如果仍然迷路,请务必澄清问题。欢迎使用堆栈溢出!除了现有的建议外,您还应该阅读和阅读。例如,不清楚您是否有使用任何语言生成程序图像的经验。不幸的是,所以仍然不适合回答这么广泛的问题!你说得对,这是一个非常广泛的问题。谢谢你的耐心@huon dbaupp说得很对:我想知道的是如何创建一个图像,编辑并保存它。程序性的东西可以稍后再来。再次感谢。顺便说一句,我希望像“elmesque”这样的东西能够在“rust image”的基础上实现,而不需要更多面向桌面的活塞部件。非常感谢!这就是文档中缺少的要运行的示例!此代码无法编译,因为现在
Imagebuffer
需要两个参数:像素类型和存储它的容器。例如,您应该更改为:
let mut image=ImageBuffer:::new(宽度、高度)
我使用
image 0.15.0
获得
.save()
的“预期2个参数”。我无法让这个函数工作。还尝试了
image.save(“out.png”,image::png)
image.save(&Path::new(“out.png),image::png)
:(