2014-10-10 11 views
10

Okumak için teşekkürler. Bu soru gelen yöntemler kullanılarak bir GIF oluşturduk: Ben kamera rulo, ALAssetLibrary 's olmayan JPG/PNG görüntüleri kaydetmek mümkün görünmektedir tek yöntemi kullanmaya çalışıyorumOluşturulan GIF'i kamera rulosuna kaydeder misiniz?

Create and and export an animated gif via iOS?

writeImageDataToSavedPhotosAlbum:metadata:completionBlock: böyle geçici Dizini Gif kaydedin:

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

Sonra erişmek NSData gibi:

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

GIF, UIImageView'da görüntüleyebileceğimiz şekilde oluşturuldu, ancak kaydetmeyi denediğimde, yöntem başarı olarak (hata yok) döner, ancak aslında kaydetmez (Nil değerini döndürür. NSURL * assetURL ve kamera rulosunda görünmüyor).

GIF'leri kamera rulosuna başarıyla kaydetmek için nasıl alabilirim?

+0

Eklendi 2 Çözümler. İlk önce mevcut GIF'i kamera rulosuna kaydedin. İkinci kamera rulosu GIF oluşturmak ve kaydetmek için bir kütüphane (http://jitsik.com/wordpress/?p=208) kullanır. GIT çatalımı kontrol et. – bllakjakk

cevap

2

Ben sorunu aslında dosyadan GIF kapmak için mümkün oldu buldum. CGImageDestinationCreateWithURL'u kullanarak CGImageDestinationCreateWithData'u kullanıyorum ve Gif verilerini saklamak için CFMutableDataRef'u kullandım. Nedenini bilmiyorum, ama bu writeImageDataToSavedPhotosAlbum çalışma ile kamera rulo tasarrufu yaptı.

10

**

Çözüm 01: Sorununu anlamak gibi yalnızca Rulonuzun

**

mevcut GIF dosyası kaydetme. Bir GIF dosyası oluşturabilir, ancak kaydedemez ve Kamera Rulosuna görüntüleyemezsiniz.

Varolan GIF Dosyasını kullanarak örnek bir sınama ekliyorum.

Adım 01. Uygulama Dokümanım dizininde bir gif IMG_0009.GIF dosyasını kopyaladım.

Adım 02 Bu NSData dosyaları yüklemek için aşağıdaki kodu kullanabilirsiniz Daha:

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]]; 

Adım 03:

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

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

: Şimdi Medya Directory dosyayı kaydetmek Öğe URL'si uygun. Şimdi medya dizini kontrol edebilirsiniz. Kaydedilen gif görüntüsünü bulabilirsiniz.

Have Fun :)


**

Çözüm 02: Oluşturma ve Kamera rulo

**

için GIF kaydetme Demosu

GIF dosyalarını oluşturma ve kaydetme için Kamera Rulosuna bir çözüm klonladım. gibi odaklanmak Rulo Dizini'nin

https://github.com/bllakjakk/Giraffe

ana kod

demo 2 veya daha fazla görüntü alarak GIF dosyası oluşturur ve Kamera kaydedin: indirip kontrol benim çatal github de olabilir aşağıdaki gibi olabilir:

( )

Adım 01: demo proje çalıştırın Ben doğrulamak için nasıl http://jitsik.com/wordpress/?p=208

önce benim çözümde belirtildiği gibi

O kitaplığını kullanır.

Adım 02: Uygulama tarafından belirtildiği gibi 2 resim ekleyin ve Ver'i tıklatın.

Adım 03: Şimdi oluşturduğunuz gif'i bulacağınız kamera rulosunu kontrol edin. Önceki

: kaydetmek için 3. parti lib gerekir böylece

GIF, tescilli bir biçimdir. Takip eden bağlantıyı

kontrol: http://jitsik.com/wordpress/?p=208

+0

Bana bunun kamera rulosuna nasıl kaydedilebileceğini gösteren bir örnek gösterebilirseniz bir ödül oluşturdum. –

+0

Kendimden bir çözüm bulurken, GIF'in boyutunu daha büyük dosyalarda çakılmayacak kadar kestiremem. –

+2

Fotoğraf çerçevesini kullanarak bunun nasıl yapılacağı hakkında bir fikriniz var mı? – user379468

2

Bu iOS 9 ile çalışmak ve ALAssets'in kullanımdan kaldırılması için güncellendi mi? PHPhotoLibrary'de benzer aramalar görmüyorum.

+0

Bu nasıl bir cevap? –

İlgili konular