png 透明图像元数据带有白色背景
Posted
技术标签:
【中文标题】png 透明图像元数据带有白色背景【英文标题】:png transparent image metadata coming with white background 【发布时间】:2021-03-28 19:30:53 【问题描述】:元数据正在从 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
【问题讨论】:
【参考方案1】:我找到了解决办法:
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
调用函数:
mainCenterIcon.image = UIImage(data: value as! Data)
mainCenterIcon.image = mainCenterIcon.image!.imageByMakingWhiteBackgroundTransparent()
参考:Original Post
【讨论】:
【参考方案2】:您必须将图像背景设置为清除颜色并将不透明标志设置为 false。
使用这两个:
imageView.backgroudColor = UIColor.clear
imageView.isOpaque = false
【讨论】:
这不起作用。白色背景仍然出现。 据我所知并每天使用 PNG 是由 Xcode 管理的原生透明的。有时会发生一些 png 有一些问题需要强制他的背景处于透明模式。所以我认为你的PNG中有一些东西。看看这个imgur.com/a/CNqFGHP以上是关于png 透明图像元数据带有白色背景的主要内容,如果未能解决你的问题,请参考以下文章