Rust 确定锈蚀动态图像的钻头深度
如何确定rust中Rust 确定锈蚀动态图像的钻头深度,rust,Rust,如何确定rust中image::DynamicImage的位深度?我正在使用创建一个RgbImage,RgbImage::new()要求我指定要从中创建的Rgb字节数据的位深度。我在程序中加载的图像具有不同的位深度,因此我需要能够动态地确定图像的位深度值 impl RgbImage pub fn new( data: &[u8], w: u32, h: u32, depth: u32 ) -> Result<RgbImage, FltkErr
image::DynamicImage
的位深度?我正在使用创建一个RgbImage
,RgbImage::new()
要求我指定要从中创建的Rgb字节数据的位深度。我在程序中加载的图像具有不同的位深度,因此我需要能够动态地确定图像的位深度值
impl RgbImage
pub fn new(
data: &[u8],
w: u32,
h: u32,
depth: u32
) -> Result<RgbImage, FltkError>
使用图像::*;
使用fltk::*;
//...
让img=image::open(“my_img.png”).unwrap()// 正如@Ivan C所说,最简单的方法是在match
语句中使用查找表
使用image::DynamicImage;
发布fn位深度(图像:&图像::动态图像)->u32{
使用DynamicImage::*;
匹配图像{
ImageLuma8()=>1,
ImageLumaA8()=>2,
图像RGB8()=>3,
ImageRgba8()=>4,
ImageBgr8()=>3,
ImageBgra8()=>4,
ImageLuma16()=>2,
ImageLumaA16()=>4,
图像RGB16()=>6,
ImageRgba16()=>8,
}
}
也就是说,你得小心一点。FLTK对每个像素中的位深度表示的颜色顺序进行了一些假设(有文档记录,特别注意,它假设RGB颜色顺序,并将拒绝任何大于4的位深度)。最好创建一个函数,该函数采用动态图像
,并在必要时将其转换为图像
板条箱中适当的FLTK兼容表示形式(基本上是ImageLuma8、ImageLuma8、ImageRgb8或ImageRgba8中的一种),然后对结果图像类型的位深度进行硬编码。DynamicImage
有一种获取颜色类型的方法,该方法本身有一种方法:
DynamicImage
是一个枚举,您可以对其进行match
。@ivac按位深度匹配?
image = "0.23.12"
fltk = "0.12.0"
img.color().bytes_per_pixel()