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% 有效
我将用户名和照片用户添加到 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% 有效