转换为JPEG给定图像数据和UTI

鉴于Data及其UTI,将其转换为JPEG的正确方法是什么?

PHImageManager.default().requestImageData(for: asset, options: options, resultHandler: { (imageData: Data?, dataUTI: String?, _, _) in guard let imageData = imageData, let dataUTI = dataUTI else { return } if !UTTypeConformsTo(dataUTI as CFString, kUTTypeJPEG) { //TODO: Convert to JPEG } }) 

刚刚将这个问题与PHImageManager以.heic而不是.jpeg的forms返回,这对我有用:

 PHImageManager.default().requestImageData(for: asset, options: PHImageRequestOptions(), resultHandler: { (data, string, orient, info) in if string?.range(of: ".heic") != nil || string?.range(of: ".heif") != nil { let rawImage = UIImage(data: data!) self.uploadData = UIImageJPEGRepresentation(rawImage!, 1.0) self.uploadName = "public.jpeg" } else { self.uploadData = data self.uploadName = string } self.uploadFileToServer() }) 

如果它的UTType是JPEG ,则您已经拥有图像的正确JPEG编码表示。 如果要将该图像显示在屏幕上,只需要使用给定数据调用init?(data:)初始化程序初始化UIImage对象。