Конвертировать UIImage в NSData, НО остаться в виде файла GIF - PullRequest
3 голосов
/ 14 сентября 2011

У меня есть UIImage, который представляет собой файл GIF.

Мне нужно превратить его в объект NSData.Но он должен оставаться в формате GIF, поэтому я не могу использовать UIImageJPEGRepresentation.

Есть идеи?

Ответы [ 3 ]

12 голосов
/ 14 сентября 2011

Раз это UIImage, он больше не гиф.Он уже был интерпретирован как основной объект графического изображения, обернутый в UIKit-элементы UIImage.У вас нет UIImage, который "это GIF".Возможно, это было однажды, но это время прошло.

Если вы загружаете эту вещь (которую я предполагаю из вашего комментария «У меня нет доступа к файлу»), вам следует скачать еекак данные, и сохраните их как данные, и если вы создадите UIImage на основе этих данных, вам, возможно, потребуется сохранить данные вокруг.

(Хотя это все предположение, потому что вы ведетеподробности о вашем вопросе капают за каплей. Если бы вы могли с большим вздохом сказать, чего вы хотите достичь, мы, вероятно, можем помочь лучше.)

8 голосов
/ 28 марта 2013

Я столкнулся с той же проблемой, о которой вы упомянули, и вот код, который я использовал для сохранения анимированного GIF-файла в Фото без потери анимации:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

NSData *data = [NSData dataWithContentsOfURL:[self getCurrentGIFURL]];

[library writeImageDataToSavedPhotosAlbum:data metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) {}

В основном, если вы сохраняете GIF-файл из URL или из файла напрямуюкак объект NSData вместо того, чтобы делать его UIImage, он будет сохранять анимацию.

2 голосов
/ 14 сентября 2011

Вы можете загрузить его непосредственно в NSData *, если знаете путь к файлу.Например:

NSData *gifData = [NSData dataWithContentsOfFile:@"myCoolPic.gif"];

NSData dataWithContentsOfFile docs

...