в моем приложении я отображаю картинки из пользовательской библиотеки. Они сохраняются в кэше Core Data и представляются в виде коллекции с UIImage .
Но иногда они размыты, как в следующее изображение:
Первые 2 строки представляют собой изображения, извлеченные из пользовательской библиотеки, последняя строка представляет собой изображения, извлеченные из Интернета (и они в хорошем качестве). Все изображения сохраняются в основных данных.
Это код, в котором я преобразую PHAsset в необработанные данные, а затем сохраняю его в Core Data:
PHImageManager.default().requestImage(for: asset, targetSize: PHImageManagerMaximumSize, contentMode: .aspectFit, options: nil) { (image, info) in
let data = image?.jpegData(compressionQuality: 1)
let file = MediaFile.newMediaFile(data: data, type: .image)
localMedia.addMedia(media: file)
}
и здесь я строю изображение с необработанными данными, извлеченными из основных данных:
func buildImage(fromMedia localMedia: LocalMedia, completion: @escaping (UIImage?) -> ()) {
bgQueue.async {
guard let file = localMedia.orderedMediaFiles.first,
let data = file.data,
let image = UIImage(data: data)
else {
completion(nil)
return
}
completion(image)
}
}