gpt4 book ai didi

ios - 在 iOS 中截取带有标签和透明背景的 View 并上传到服务器

转载 作者:搜寻专家 更新时间:2023-11-01 06:57:27 25 4
gpt4 key购买 nike

我想截取一个视​​图并从中创建一个 UIImage。我希望在我的图像中保留 View 的透明度属性。我在创建 UIImage 的扩展后尝试了这种方法,但是当上传到服务器时,结果图像中的背景不是透明的。

如果我做错了什么,请帮助或指出我!!这意味着生成的 png 没有透明度。

class func createTransparentImageFrom(label: UILabel, imageSize: CGSize) -> UIImage {
UIGraphicsBeginImageContextWithOptions(imageSize, false, 2.0)
let currentView = UIView.init(frame: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height))
currentView.backgroundColor = UIColor.clear
currentView.addSubview(label)

currentView.layer.render(in: UIGraphicsGetCurrentContext()!)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return img!
}

最佳答案

这是因为当我们渲染 View 时,图像是 JPEG/JPG,所以我们需要将其转换为 png 以获取图层信息。

试试这个:

extension UIImage {
class func createTransparentPNGFrom(label: UILabel, imageSize: CGSize) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(imageSize, false, 0)
let currentView = UIView.init(frame: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height))
currentView.backgroundColor = UIColor.clear
currentView.addSubview(label)
currentView.layer.render(in: UIGraphicsGetCurrentContext()!)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
guard let newImg = img else {
return nil
}
guard let imageData = UIImagePNGRepresentation(newImg) else {
return nil
}
return UIImage.init(data: imageData)
}
}

关于ios - 在 iOS 中截取带有标签和透明背景的 View 并上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com