繁体   English   中英

png 透明图像元数据带有白色背景

[英]png transparent image metadata coming with white background

元数据正在从 url 中提取透明的 png 图像。 然而,UIImageView不是透明的,并且具有白色背景。

有解决这个问题的方法吗?

也许.pngData()

@IBOutlet weak var mainCenterIcon: UIImageView!

func initAudioPlayer() {
        
        let url = URL(string: activeAudioURL) 
        let playerItem:AVPlayerItem = AVPlayerItem(url: url!)
        player = AVPlayer(playerItem: playerItem)
        
        //MetaData to recieve album artwork
        let metadataList = playerItem.asset.metadata
        
        
        for item in metadataList {

            guard let key = item.commonKey?.rawValue, let value = item.value else{
                continue
            }

           switch key {
           case "artwork" where value is Data : mainCenterIcon.image = UIImage(data: value as! Data)
            default:
              continue
           }
        }
    }

您必须将图像背景设置为清除颜色并将不透明标志设置为 false。

使用这两个:

imageView.backgroudColor = UIColor.clear
imageView.isOpaque = false

我找到了一个解决方案:

extension UIImage {
    func imageByMakingWhiteBackgroundTransparent() -> UIImage? {

        let image = UIImage(data: self.jpegData(compressionQuality: 1.0)!)!
        let rawImageRef: CGImage = image.cgImage!

        let colorMasking: [CGFloat] = [222, 255, 222, 255, 222, 255]
        UIGraphicsBeginImageContext(image.size);

        let maskedImageRef = rawImageRef.copy(maskingColorComponents: colorMasking)
        UIGraphicsGetCurrentContext()?.translateBy(x: 0.0,y: image.size.height)
        UIGraphicsGetCurrentContext()?.scaleBy(x: 1.0, y: -1.0)
        UIGraphicsGetCurrentContext()?.draw(maskedImageRef!, in: CGRect.init(x: 0, y: 0, width: image.size.width, height: image.size.height))
        let result = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return result

    }

}

调用 function:

mainCenterIcon.image = UIImage(data: value as! Data)
mainCenterIcon.image = mainCenterIcon.image!.imageByMakingWhiteBackgroundTransparent()

参考: 原帖

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM