我正在尝试保存 ImageBuffer
到一个文件,但我在让类型达成一致时遇到一些麻烦:
extern crate image;
use image::{ImageBuffer, Pixel, Rgb};
fn main() {
let img = ImageBuffer::new(256, 256);
for x in 0..256 {
for y in 0..256 {
let pixel = Rgb::from_channels(0, x ^ y, 0, 0);
img.put_pixel(x, y, pixel);
}
}
img.save("output.png");
}
这会产生以下编译器错误:
error: no method named `save` found for type `image::ImageBuffer<image::Rgb<u32>, std::vec::Vec<u32>>` in the current scope
--> src/main.rs:15:9
|
15 | img.save("output.png");
| ^^^^
我认为像素类型与 save
seen in the docs 所需的定义不匹配.
最佳答案
我最终需要进行一些类型转换才能使签名一致。
这是工作代码:
extern crate image;
use image::{ImageBuffer, Pixel, Rgb};
fn main() {
let mut img = ImageBuffer::new(256, 256);
for x in 0..256 {
for y in 0..256 {
let pixel = Rgb::from_channels(0, x as u8 ^ y as u8, 0, 0);
img.put_pixel(x as u32, y as u32, pixel);
}
}
img.save("output.png");
}
关于image - 无法保存 ImageBuffer : no method named `save` found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300921/