我使用这个函数来检测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
}
}
但是它不起作用。我用一个没有透明度的png图片试过,但是它仍然返回true。
每个像素的循环不是一个好主意,因为它太昂贵了,我猜。任何想法如何检查UIImage是否具有透明度,就像这个图像:image
3条答案
按热度按时间unftdfkk1#
你问到Swift,Menaim给出了一个有用的答案,但是用的是Objective-C。
以下是Swift版本:
我刚刚在一个没有alpha通道的PNG图像上测试了上面的方法,它工作了。
这是一个没有alpha通道的PNG图像(假设SO的网站保留了它...)x1c 0d1x
5rgfhyps2#
你的解决方案似乎很好,没有问题,但你也可以看看这个:
pes8fvy93#
我已经更新了Menaim对swift的回答,它按预期工作。