Image 是否有一种方法可以使用创建白色图像的图像板条箱来创建通用函数?

Image 是否有一种方法可以使用创建白色图像的图像板条箱来创建通用函数?,image,types,rust,Image,Types,Rust,我正在尝试创建一个通用函数,以便在rust中创建白色图像 到目前为止,我试过: 使用imageproc::drawing::draw\u filled\u rect\u mut; 使用image::buffer::ConvertBuffer; 使用图像:{genericmage,ImageBuffer,Pixel,RgbaImage,Rgba}; 使用imageproc::rect::rect; 发布(板条箱)fn创建方形图像(源图像:&I,大小:u32)->ImageBuffer 哪里 I:通

我正在尝试创建一个通用函数,以便在rust中创建白色图像

到目前为止,我试过:

使用imageproc::drawing::draw\u filled\u rect\u mut;
使用image::buffer::ConvertBuffer;
使用图像:{genericmage,ImageBuffer,Pixel,RgbaImage,Rgba};
使用imageproc::rect::rect;
发布(板条箱)fn创建方形图像(源图像:&I,大小:u32)->ImageBuffer
哪里
I:通用图像,
一:缓冲,,
P:像素
{
let(宽度、高度)=源尺寸();
让mut block_image=创建_白色_图像(大小、大小);
设delta_x=(大小-宽度)/2;
设δy=(尺寸-高度)/2;
对于0.高度中的y{
让target_y=y+delta_y;
如果目标_y>=大小{
继续;
}
对于0..width中的x{
设目标_x=x+delta_x;
如果目标_x>=大小{
继续;
}
设像素=源像素。得到像素(x,y);
块图像。放置像素(x,y,像素)
}
}
块图像
}
pub(板条箱)fn创建白色图像

(宽度:u32,高度:u32)->ImageBuffer 哪里 P:像素+静态, RgbaImage:ConvertBuffer { 让mut image=ImageBuffer::new(宽度、高度); 绘制填充的矩形图(&mut image,rect::at(0,0)。大小(宽度,高度),Rgba([255,255,255,255]); image.convert() }

在尝试构建时,会出现如下错误:

error[E0277]:不满足特性绑定'P:image::color::FromColor'
-->src\util.rs:217:27
|
217 |让mut block_image=创建_white_image(大小、大小);
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^`
我想如果我在
FromColor
上也做了一个类型限制,我会很好,但是由于某种原因,板条箱没有公开它

有什么我遗漏的吗

活动工具链:

stable-x86_64-pc-windows-gnu (default)
rustc 1.43.0 (4fb7144ed 2020-04-20)
cargo.toml依赖项:

[dependencies]
image = "0.23.4"
imageproc = "0.20.0"

欢迎来到堆栈溢出!很难回答你的问题,因为它没有包含一个。我们无法说出代码中存在哪些板条箱(及其版本)、类型、特征、字段等。如果您试图重现您的错误(如果可能的话),或者在全新的货运项目中,那么我们将更容易帮助您,然后您的问题将包括附加信息。您可以使用以下方法减少在此处发布的原始代码。谢谢@Shepmaster感谢您的指导!试图适当地引入MRE,希望它能有所帮助。
P
参数可能是问题的一部分。你不希望这对任何
I
和任何
P
都有效;您只需要将其用于任何
I
,然后只有一个相关
像素
类型的选择。例如,添加约束:
I:ConvertBuffer+generimage
::Pixel:Pixel
。将
P
替换为
I::Pixel
(可能具有上述限定条件)。尽管如此,如果不需要
FromColor
,我无法找到
create\u white\u image
的工作类型签名。这并不是说这件事做不到——我对这个板条箱没有任何经验。