iOS照片保存到系统相册,系统压缩问题

网上找了很多的资料貌似都没有很好的解决这个问题。
先简单的描述下,照片是我从服务器获取到的,一个大小为8M的jpg图片,下载后保存到了沙盒,然后根据沙盒中的图像使用这个方法来存到相册

UIImageWriteToSavedPhotosAlbum(_:_:_:_:)

结果是,大小为8M的图,存到相册这有3M左右了。

ps:别问怎么看的照片大小,看照片大小的方式很多种,iTunes,微信,调用Photos
requestImage(for:targetSize:contentMode:options:resultHandler:)都可以查看图片的大小。

图片的信息全都没有了,创建日期显示的为当前日期。
各个论坛找了一遍最后解决了,但是原因还是不能具体的描述很清楚
解决办法是:
直接获取当前要存储照片的url,然后使用以下方法存入相册。

creationRequestForAssetFromImage(atFileURL:)

猜测:

UIImageWriteToSavedPhotosAlbum(_:_:_:_:)

方法会导致元数据丢失以及由于解压和重新压缩而导致大小改变,特别是jpeg它本身就是压缩格式,
下载后放到UIImage里会有压缩以及一些特别的处理,所以尽量不直接去用UIImage去存,而是使用URL。

最后的最后放个整段代码:

//imageUrl为图片的路径
PHPhotoLibrary.requestAuthorization { status in
            if case .authorized = status {
                DispatchQueue.main.async {
                    PHPhotoLibrary.shared().performChanges({
                        PHAssetChangeRequest.creationRequestForAssetFromImage(atFileURL: imageUrl!)
                    }) { (success, error) in
                        if let error = error {
                            print(error)
                        } else {
                            print("保存成功")
                        }
                    }
                }
            }
        }

你可能感兴趣的:(iOS照片保存到系统相册,系统压缩问题)