使用Rust image板条箱确定加载的图像是否具有alpha通道

使用Rust image板条箱确定加载的图像是否具有alpha通道,rust,Rust,为了将图像绘制到GUI中,我需要确定图像是否具有alpha通道。关于获取图像::DynamicImage的位深度, 但是我想知道除了使用这样的匹配语句之外,图像板条箱是否还有其他方法可以检测DynamicImage的alpha通道 image = "0.23.14" 使用图像::*; 使用image::io::Reader作为ImageReader; fn main(){ 让加载的\u img:DynamicImage=ImageReader::打开(路径).unwrap(

为了将图像绘制到GUI中,我需要确定图像是否具有alpha通道。关于获取
图像::DynamicImage
的位深度, 但是我想知道除了使用这样的匹配语句之外,图像板条箱是否还有其他方法可以检测
DynamicImage
的alpha通道

image = "0.23.14"
使用图像::*;
使用image::io::Reader作为ImageReader;
fn main(){
让加载的\u img:DynamicImage=ImageReader::打开(路径).unwrap().decode().unwrap();
dbg!(是rgba(已加载的img));
}
fn有α(img:DynamicImage)->bool{
匹配img{
DynamicImage::ImageLumaA8()=>true,
DynamicImage::ImageRgba8()=>true,
DynamicImage::ImageBgra8()=>true,
DynamicImage::ImageLumaA16()=>true,
DynamicImage::ImageRgba16()=>true,
_=>错误
}
}

DynamicImage
有一个获取颜色类型的方法,该方法本身有一个方法:


具有α(ImageReader::open(“my_image.png”).unwrap().decode().unwrap())
为我返回false。对于所有PNG,它不应该返回真值吗?我相信图像本身没有透明像素,这会影响has_alpha()的返回值吗?不,不是所有PNG都有alpha通道。@ANimator120图像中透明度的缺失或存在不一定会改变has_alpha的返回值,但是如果图像需要的话,我希望一般的PNG导出器或压缩器只使用带有alpha样本的颜色类型,所以。。。有点?e、 g.为什么photoshop会在RGB甚至托盘化就足够的情况下保存到更重的RGBA?
fn has_alpha(img: DynamicImage) -> bool {
    img.color().has_alpha()
}