我有一个应用程序,用户可以上传多个图像,所有图像将存储在服务器中,并将显示在我的iOS应用程序的Web视图中.
现在一切都习以为常,直到iOS 10,但突然我们开始看到一些图片/图像没有显示,经过一些调试我们发现这是由于苹果(HEIC)的新图像格式引起的问题,
我尝试改回Native UIImagePicker(只选择一个图像)并且图像显示为Apple我猜想当用户选择图像时将图像从HEIC转换为JPG,但当我使用第三方库时情况并非如此因为我需要实现多个图像选择器.
虽然我们正在努力在服务器端进行转换过程以避免未更新应用程序的用户遇到麻烦,但我还想看看是否有任何方法可以在我的应用程序中本地转换图像格式.
mar*_*o16 11
在将HEIC照片上传到服务器之前,可以将其转换为JPEG:
NSData *jpgImageData = UIImageJPEGRepresentation(image, 0.7);
Run Code Online (Sandbox Code Playgroud)
如果你使用PHAsset,为了拥有图像对象,你需要从PHImageManager调用这个方法:
- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(nullable PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *__nullable result, NSDictionary *__nullable info))resultHandler;
Run Code Online (Sandbox Code Playgroud)
在服务器端,您还可以使用此API
我就是这样做的
let newImageSize = Utility.getJpegData(imageData: imageData!, referenceUrl: referenceUrl!)
/**
- Convert heic image to jpeg format
*/
public static func getJpegData(imageData: Data, referenceUrl: NSURL) -> Data {
var newImageSize: Data?
if (try? Data(contentsOf: referenceUrl as URL)) != nil
{
let image: UIImage = UIImage(data: imageData)!
newImageSize = image.jpegData(compressionQuality: 1.0)
}
return newImageSize!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5839 次 |
| 最近记录: |