将UIImage转换为NSData并在Swift中转换回UIImage?
我试图保存一个UIImage
到NSData
,然后在Swift中将NSData
读回新的UIImage
。 将UIImage
转换为NSData
我使用下面的代码:
let imageData: NSData = UIImagePNGRepresentation(myImage)
如何将imageData (NSData)
转换回新的UIImage
?
UIImage(data:imageData,scale:1.0)
假设图像的比例是1。
谢谢。 帮了我很多。 转换为Swift 3并工作
将let data = UIImagePNGRepresentation(image) as NSData?
要获取: let imagePt = UIImage(data: (caminhodaImagem as! NSData) as Data)
使用imageWithData:
方法,将其作为UIImage(data:)
转换为Swift UIImage(data:)
let image : UIImage = UIImage(data: imageData)
保存为数据:
从StoryBoard中,如果你想在MainStoryBoard的imageView上保存“图像”数据,下面的代码将起作用。
let image = UIImagePNGRepresentation(imageView.image!) as NSData?
加载“image”到imageView:看感叹号“!”,“?” 与这一点是否相当接近。
imageView.image = UIImage(data: image as! Data)
在此过程中,“NSData”types会自动转换为“数据”types。
为了安全地执行代码,使用带有Data
if-let
块来防止应用程序崩溃,因为函数UIImagePNGRepresentation
返回一个可选值。
if let img = UIImage(named: "TestImage.png") { if let data:Data = UIImagePNGRepresentation(img) { // Handle operations with data here... } }
注意: 数据是Swift 3+类。 Swift 3+使用数据而不是NSData
通用图像操作(如png和jpg):
if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg") if let data:Data = UIImagePNGRepresentation(img) { handleOperationWithData(data: data) } else if let data:Data = UIImageJPEGRepresentation(img, 1.0) { handleOperationWithData(data: data) } } ******* func handleOperationWithData(data: Data) { // Handle operations with data here... if let image = UIImage(data: data) { // Use image... } }
通过使用扩展:
extension UIImage { var pngRepresentationData: Data? { return UIImagePNGRepresentation(img) } var jpegRepresentationData: Data? { return UIImageJPEGRepresentation(self, 1.0) } } ******* if let img = UIImage(named: "TestImage.png") { //UIImage(named: "TestImage.jpg") if let data = img.pngRepresentationData { handleOperationWithData(data: data) } else if let data = img.jpegRepresentationData { handleOperationWithData(data: data) } } ******* func handleOperationWithData(data: Data) { // Handle operations with data here... if let image = UIImage(data: data) { // Use image... } }