我已经按照这种方式做了,对我来说有效。
步骤1:从文件夹中选择图像,然后检查其扩展名。
步骤2:如果是heic格式,则将该数据转换为图像,然后将图像转换为jpeg数据。
func getJpegData(imageData: Data) -> Data? {
var newImageSize: Data?
guard imageData.count != 0 else {
return nil
}
let image: UIImage = UIImage(data: imageData)!
newImageSize = image.jpegData(compressionQuality:0.6)
return newImageSize!
}
步骤3:然后在将带有扩展名的文件名发送到服务器之前,将该文件扩展名更改为jpeg。
let fName = filename.replacingOccurrences(of: "heic", with: "jpeg")
最终调用的代码为:
func attachmentPickerMenu(_ menu: HSAttachmentPicker, upload data: Data, filename: String, image: UIImage?) {
let fm = FileManager.default
let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let myurl = docsurl.appendingPathComponent(filename)
let mtype = myurl.mimeType()
let imgExtensons = myurl.pathExtension
print("mtype:",mtype,"myurl:",myurl, "docsurl:",docsurl,"imgExtensins:",imgExtensons, "filenamess:",filename)
if imgExtensons.lowercased() == "heic" {
let imgData = CEnumClass.share.getJpegData(imageData: data)
guard imgData != nil else{
return self.view.makeToast(ConstantStr.somethingWorng.val, duration: 2, position: .center)
}
let fName = filename.replacingOccurrences(of: "heic", with: "jpeg")
DispatchQueue.main.async {
self.pendingDocViewModel.uploadAddReimburseData(serviceFormData: imgData!, mimeTpes: "image/jpeg", fileName: fName)
}
}}