#ios #swift #uiimageview #uiimage #uiimagepickercontroller
#iOS #swift #uiimageview #uiimage #uiimagepickercontroller
Вопрос:
Библиотека GIFU, используемая для отображения Gif-изображения в UIImageView
выбранном из UIImagePickerController
public func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
let imageUrl = info[.referenceURL] as! NSURL
let imageName = imageUrl.lastPathComponent
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let photoURL = NSURL(fileURLWithPath: documentDirectory)
let localPath = photoURL.appendingPathComponent(imageName!)
let image = info[.originalImage]as! UIImage
let data = image.jpegData(compressionQuality: 0)
do {
try data?.write(to: localPath!, options: Data.WritingOptions.atomic)
}
catch
{
// Catch exception here and act accordingly
}
self.pickerController(picker, didSelect: data)
}
func didSelect(image: Data?) {
tempImage.prepareForAnimation(withGIFData: image!, loopCount: 3) {
DispatchQueue.main.asyncAfter(deadline: .now() 0.5, execute: {
self.tempImage.startAnimating()
})
}
}
Отображение изображения, но не анимация, выглядит так, что формат изображения меняется после выбора.
Ответ №1:
Вы конвертируете данные GIF в jpeg, используя следующую строку кода.
let data = image.jpegData(compressionQuality: 0)
Избегайте преобразования данных в JPEG, теперь (я думаю, начиная с iOS 13) собственный контроллер поддерживает предварительный просмотр gif-файла при выборе, попробуйте это.