[英]function or associated item not found for image::ImageBuffer::from_vec()
我正在使用帶有以下代碼的Piston image
包裝箱:
use image::{Rgb, ImageBuffer, Pixel};
let image = Vec::<Rgb<u8>>::new();
let image_buffer = ImageBuffer::<Rgb<u8>, Vec<Rgb<u8>>>::from_vec(
width, height
image,
).unwrap();
但是我得到這個錯誤:
error[E0599]: no function or associated item named `from_vec` found for type `image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<image::Rgb<u8>>>` in the current scope
--> src/main.rs:348:21
|
348 | let image_buffer = ImageBuffer::<Rgb<u8>, Vec<Rgb<u8>>>::from_vec(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function or associated item not found in `image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<image::Rgb<u8>>>`
我不知道為什么。 據我所知,它顯然在文檔中 ,並且類型似乎正確。
擴展一點:在上面的示例中,我們有一個ImageBuffer::<Rgb<u8>, Vec<Rgb<u8>>
。 ImageBuffer
根據其類型參數提供from_vec
兩種實現:
impl<P, Container> ImageBuffer<P, Container>
where
P: Pixel<Subpixel = u8> + 'static,
Container: Deref<Target = [u8]>,
impl<P: Pixel + 'static> ImageBuffer<P, Vec<P::Subpixel>>
where
P::Subpixel: 'static,
這些都不可用,因為ImageBuffer<Rgb<u8>, Vec<Rgb<u8>>
的Container
參數類型ImageBuffer<Rgb<u8>, Vec<Rgb<u8>>
是Rgb<u8>
值的向量。 它將取消引用[Rgb<u8>]
,使其與第一種實現不兼容,第二種期望子像素值( <P as Pixel>::Subpixel
)的向量,而不是實際像素值( Rgb<u8>
)。 通常,這是此板條箱中的ImageBuffer
類型期望作為其像素數據容器的類型。
工作示例:
extern crate image;
use image::{ImageBuffer, Pixel, Rgb};
fn main() {
let width = 64;
let height = 64;
let image = vec![0x7F_u8; width as usize * height as usize * 3];
let image_buffer =
ImageBuffer::<Rgb<u8>, Vec<u8>>::from_vec(width, height, image).unwrap();
}
嗯,它必須是Vec<P::Subpixel>
,即Vec<u8>
而不是Vec<Rgb<u8>>
。 有點煩人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.