簡體   English   中英

找不到image :: ImageBuffer :: from_vec()的函數或相關項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM