2014-10-10 6 views
10

Спасибо за чтение. Я создал GIF, используя методы из этого вопроса:Сохранение сгенерированного GIF в рулон камеры?

Create and and export an animated gif via iOS?

Я пытаюсь использовать единственный метод, который появляется, чтобы иметь возможность сохранить изображения JPG не являющихся/PNG в камеру ролл, ALAssetLibrary «ю.ш. writeImageDataToSavedPhotosAlbum:metadata:completionBlock:

откладываю Gif к временной папке, как это:

NSString *exportPath = [NSTemporaryDirectory() stringByAppendingString:@"/animated.gif"]; 
NSURL *fileURL = [NSURL fileURLWithPath:exportPath isDirectory:NO]; 

Тогда доступ к NSData как:

NSData * gifData = [NSData dataWithContentsOfFile:fileURL.absoluteString]; 

МФП создается как я могу отобразить его в UIImageView, но когда я пытаюсь сохранить его, что метод возвращает как успех (без ошибок), но фактически не сохранить (возвращает Nil для NSURL * assetURL и не отображается в рулоне камеры).

Как я могу получить свои GIF-файлы для успешного сохранения в рулоне камеры?

+0

Добавлено 2 решения. Сначала просто сохраните существующий GIF в ролике камеры. Второй использует библиотеку (http://jitsik.com/wordpress/?p=208) для создания и сохранения GIF в Camera Roll. Проверьте мою вилку GIT. – bllakjakk

ответ

2

Я обнаружил, что проблема в том, что я не смог фактически захватить GIF из файла. Я переключился с CGImageDestinationCreateWithURL на CGImageDestinationCreateWithData и использовал CFMutableDataRef для хранения данных Gif. Я не знаю, почему, но это сделало экономию на рулоне камеры с работой writeImageDataToSavedPhotosAlbum.

10

**

Solution 01: Только сохранение существующего файла GIF для Фотопленка

**

Как я понимаю вашу проблему. Вы можете сгенерировать GIF-файл, но не можете сохранить его, а также просмотреть его в Camera Roll.

Поэтому я прилагаю образец теста с использованием существующего файла GIF.

Шаг 01. Я скопировал gif-файл IMG_0009.GIF в каталог своего приложения.

Шаг 02 Чем я использую следующий код, чтобы загрузить эти файлы NSData:

NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil]; 
NSURL *fileURL = [documentsDirectoryURL URLByAppendingPathComponent:@"IMG_0009.gif"]; 

NSData *gifData = [NSData dataWithContentsOfFile:[fileURL path]]; 

Шаг 03: Теперь сохраните файл в директории СМИ:

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
[library writeImageDataToSavedPhotosAlbum:gifData metadata:nil completionBlock:^(NSURL *assetURL, NSError *error) { 

    NSLog(@"Success at %@", [assetURL path]); 
}]; 

Правильный URL-адрес. Теперь вы можете проверить свой медиа-каталог. вы можете найти сохраненное изображение gif.

Весело :)


**

Solution 02: Демо Создание и сохранение GIF в Фотопленка

**

Я клонировал некоторое решение, чтобы показать создание и сохранение GIF-файлов в Camera Roll. Вы можете скачать и проверить вилку на GitHub:

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

https://github.com/bllakjakk/Giraffe

основного код, чтобы сосредоточиться, как ниже:

[export encodeToFile:tempFile callback:^(NSString * aFile) { 

    NSLog(@"Path: %@", aFile); 

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

    NSData *data = [NSData dataWithContentsOfURL:[[NSURL alloc]initFileURLWithPath:aFile]]; 

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

     NSLog(@"Success at %@", [assetURL path]); 
    }]; 

}];

Он использует библиотеку, как я уже говорил в моем решении, прежде чем http://jitsik.com/wordpress/?p=208

Как проверить:

Шаг 01: Выполнить демонстрационный проект.

Шаг 02: В соответствии с приложением добавьте 2 изображения и нажмите «Экспорт».

Шаг 03: Теперь проверьте рулон камеры, вы найдете созданную gif.

Предыдущая:

GIF является собственный формат, так что вам нужно будет 3-й партии LIB, чтобы сохранить его.

проверить следующую ссылку: http://jitsik.com/wordpress/?p=208

+0

Я создал щедрость, если вы можете показать мне пример того, как это можно использовать для сохранения в кадре камеры? –

+0

В то время как я нашел решение самостоятельно, я могу прибегнуть к этому, если я не могу сократить размер GIF настолько, чтобы не сбой на больших файлах. –

+2

Любая идея, как это сделать, используя фреймворк? – user379468

2

Было ли это обновлено для работы с iOS 9 и устаревшей ALAssets? Я не вижу подобных вызовов в PHPhotoLibrary.

+0

как это ответ? –

Смежные вопросы