Swift 中的 UIImage 到 String 和 String 到 UIImage

UIImage to String and String to UIImage in Swift

我将用户名和照片用户添加到 UserDefaults 数组,然后将此数组发送到我的站点 + 将此数组插入另一个 ViewController

要保存的代码:

 let imageSaveData = UIImageJPEGRepresentation(self.profileUserPhotoImage.image!, 1.0) as NSData?    
 let base64String = imageSaveData?.base64EncodedString()
    let userNameAdnPhoto = ["name": self.userNameLabel.text, "image": base64String] as? [String: String]
    var userArrayToUDef = UserDefaults.standard.array(forKey: "userInfo") as? [[String: String]]

在另一个 ViewController 中,我不知道如何从 UserDefaults.standard.array(forKey: "userInfo") 图像到 ViewController

中的 UIImageView

字符串图像转换为 UIImage

字符串转 UIImage

yourString.toImage() // it will convert String  to UIImage

extension String {
    func toImage() -> UIImage? {
        if let data = Data(base64Encoded: self, options: .ignoreUnknownCharacters){
            return UIImage(data: data)
        }
        return nil
    }
}

将 UIImage 转换为字符串然后使用它

UIImage 转字符串

yourImage.toPngString() // it will convert UIImage to string

extension UIImage {
    func toPngString() -> String? {
        let data = self.pngData()
        return data?.base64EncodedString(options: .endLineWithLineFeed)
    }
  
    func toJpegString(compressionQuality cq: CGFloat) -> String? {
        let data = self.jpegData(compressionQuality: cq)
        return data?.base64EncodedString(options: .endLineWithLineFeed)
    }
}

此函数仅用于字符串转UIImage。

  extension String {

        func stringToImage(_ handler: @escaping ((UIImage?)->())) {
            if let url = URL(string: self) {
                URLSession.shared.dataTask(with: url) { (data, response, error) in
                    if let data = data {
                        let image = UIImage(data: data)
                        handler(image)
                    }
                }.resume()
            }
        }
    }

使用这个函数,

            yourString.stringToImage {(image) in
              self.yourPhoto.image = image
            }

现在,"UIImagePNGRepresentation"方法更新为"pngData()"方法。

如果你想将UIImage转换成String,你可以使用下面几行:

extension UIImage {
    func toString() -> String? {

        let pngData = self.pngData()

        //let jpegData = self.jpegData(compressionQuality: 0.75)

        return pngData?.base64EncodedString(options: .lineLength64Characters)
    }
}

这是来自 swift 个游乐场形状:

extension String {
/// Returns a SPCScene.Image from a string. Use to generate an image, based on an emoji string.
func image() -> UIImage {
    let size = CGSize(width: 80, height: 80)
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    UIColor.clear.set()
    let rect = CGRect(origin: .zero, size: size)
    UIRectFill(CGRect(origin: .zero, size: size))
    (self as AnyObject).draw(in: rect, withAttributes: [.font: UIFont.systemFont(ofSize: 70)])
    if let image = UIGraphicsGetImageFromCurrentImageContext() {
        UIGraphicsEndImageContext()
        return image
        
    } else {
        return UIImage()
    }
}
}

100% 有效