如何检查UIImage是否具有透明度

Bre*_*ter 6 uiimage ios swift

我使用这个函数来检测 UIImage 是否具有透明度:

extension UIImage {
  public func isTransparent() -> Bool {
    guard let alpha: CGImageAlphaInfo = self.cgImage?.alphaInfo else { return false }
    return alpha == .first || alpha == .last || alpha == .premultipliedFirst || alpha == .premultipliedLast
  }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我尝试使用不透明的 png 图像,但它仍然返回 true。

每个像素循环不是一个好主意,因为我猜它太贵了。知道如何检查 UIImage 是否具有透明度,如下图所示: image

Men*_*aim 1

您的解决方案似乎很好并且工作没有问题,但您也可以查看这个:

- (BOOL)hasAlpha : (UIImage*) img
{
    CGImageAlphaInfo alpha = CGImageGetAlphaInfo(img.CGImage);
    return (
            alpha == kCGImageAlphaFirst ||
            alpha == kCGImageAlphaLast ||
            alpha == kCGImageAlphaPremultipliedFirst ||
            alpha == kCGImageAlphaPremultipliedLast
            );

}
Run Code Online (Sandbox Code Playgroud)