Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3.0中核心数据的UIImage到NSData_Ios_Swift3_Uiimage_Ios10_Nsdata - Fatal编程技术网

Ios Swift 3.0中核心数据的UIImage到NSData

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转换

因此,在之前的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
转换为
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)