Ios Swift 3.0中核心数据的UIImage到NSData
因此,在之前的Swift 2.2中,我可以使用Ios Swift 3.0中核心数据的UIImage到NSData,ios,swift3,uiimage,ios10,nsdata,Ios,Swift3,Uiimage,Ios10,Nsdata,因此,在之前的Swift 2.2中,我可以使用Entity.image=uiImagePngResentation(UIImage(名为:“image Name”)!) 但现在在Swift 3.0中,我们似乎必须使用额外的步骤Entity.image=NSData(数据:UIImagePNGRepresentation(UIImage(名称:“image Name”)!)或与UIImage(名称:“image Name”)等效的对象 在Swift 3.0中是否有一种新方法可以从UIImage转换
Entity.image=uiImagePngResentation(UIImage(名为:“image Name”)!)
但现在在Swift 3.0中,我们似乎必须使用额外的步骤Entity.image=NSData(数据:UIImagePNGRepresentation(UIImage(名称:“image Name”)!)
或与UIImage(名称:“image Name”)等效的对象
在Swift 3.0中是否有一种新方法可以从UIImage
转换为NSData
?尝试以下方法:
if let img = UIImage(named: "hallo.png") {
let data = UIImagePNGRepresentation(img) as NSData?
}
为了安全地执行代码,请使用if-let-block-with-Data,因为函数UIImagePNGRepresentation返回可选值
if let img = UIImage(named: "Hello.png") {
if let data:Data = UIImagePNGRepresentation(img) {
// Handle operations with data here...
}
}
注:数据为Swift 3级。使用数据而不是NSData
斯威夫特3
通用图像操作(如png和jpg):
通过使用扩展名:
extension UIImage {
var pngRepresentationData: Data? {
return UIImagePNGRepresentation(self)
}
var jpegRepresentationData: Data? {
return UIImageJPEGRepresentation(self, 1.0)
}
}
*******
if let img = UIImage(named: "Hello.png") {
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...
}
用作扩展以获取PNG或JPG imageData作为NSData
extension UIImage {
var jpegRepresentationData: NSData! {
return UIImageJPEGRepresentation(self, 1.0)! as NSData // QUALITY min = 0 / max = 1
}
var pngRepresentationData: NSData! {
return UIImagePNGRepresentation(self)! as NSData
}
}
//use
imageView.image!.jpegRepresentationData or
imageView.image!.pngRepresentationData
使用UIImagePNGRepresentation将
UIImage
转换为数据
有时可能会在转换回数据时导致图像失真,因为在初始转换时会从原始数据中删除一些基本元数据
经过一些研究,我最终得到了以下代码,将UIImage
转换为数据
:
let image = UIImage(named: "whatever")
var data: Data?
if let cgImage = image.cgImage, cgImage.renderingIntent == .defaultIntent {
data = UIImageJPEGRepresentation(image, 0.8)
}
else {
data = UIImagePNGRepresentation(image)
}
对于Swift 4,这要容易得多:
let imageData = image.jpegData(compressionQuality: 0)
当然,压缩质量是您设置的一个变量。0表示最大压缩,1表示最小压缩。使用PNG或JPG图像作为数据 巴布亚新几内亚 self.imgProfilePic.image!。pngData() 用于JPEG
self.imgProfilePic.image!。jpegData(压缩质量:1.0)//Quality min=0.0到max=1.0,完成此任务。我发现有趣的是,当我使用as时,它不起作用!还是作为?。它告诉我从数据中选角?删除数据总是失败的。我很好奇为什么它能像NSData一样使用它?如果你不关心它的类型,你只需要它的原始数据表示它告诉我核心数据需要数据,而不是NSData谢谢你的帮助。另外你有photo.pngData()
let imageData = image.jpegData(compressionQuality: 0)