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