2014-10-10 15 views
10

Grazie per la lettura. Ho creato un GIF con metodi da questa domanda:Salva GIF generato per il rullino fotografico?

Create and and export an animated gif via iOS?

Sto cercando di utilizzare l'unico metodo che sembra essere in grado di salvare le immagini non JPG/PNG al rullino fotografico, ALAssetLibrary 's writeImageDataToSavedPhotosAlbum:metadata:completionBlock:

risparmio il Gif nella directory temporanea come questa:

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

quindi accedere alla NSData come:

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

Il GIF è stato creato come io sono in grado di visualizzare in un UIImageView, ma quando provo a salvarla, il metodo restituisce come un successo (nessun errore), ma in realtà non salvare (restituisce Nil per la NSURL * assetURL e non appare nel rullino fotografico).

Come posso salvare le mie GIF sul rotolo della fotocamera?

+0

Aggiunte 2 soluzioni. Per prima cosa basta salvare la GIF esistente al rullino fotografico. Second usa una libreria (http://jitsik.com/wordpress/?p=208) per creare e salvare GIF sul rullino fotografico. Controlla la mia forcella GIT. – bllakjakk

risposta

2

ho trovato il problema era che ero in grado di afferrare in realtà il GIF dal file. Sono passato dall'utilizzo di CGImageDestinationCreateWithURL a CGImageDestinationCreateWithData e ho utilizzato uno CFMutableDataRef per conservare i dati GIF. Non so perché, ma questo ha permesso di salvare il rullino con il lavoro writeImageDataToSavedPhotosAlbum.

10

**

Soluzione 01: Solo il salvataggio del file GIF esistente per Rullino

**

quanto ho capito il problema. Sei in grado di generare un file GIF ma non puoi salvarlo e anche visualizzarlo sul Rullino fotografico.

Quindi sto allegando un test di esempio utilizzando il file GIF esistente.

Passaggio 01. Ho copiato un file gif IMG_0009.GIF nella directory del documento dell'applicazione.

Step 02 Che io uso il codice qui sotto per caricare questo file 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]]; 

Fase 03: Ora salvare il file nella directory di supporto:

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

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

Il L'URL del bene è corretto. Ora puoi controllare la directory dei media. puoi localizzare l'immagine gif salvata.

Have Fun :)


**

Soluzione 02: Demo Creare e salvare GIF sul rullino fotografico

**

Ho clonato alcune soluzioni per mostrare la creazione e il salvataggio di file GIF su Rullino fotografico. È possibile scaricare e controllare la mia forchetta a github:

La demo crea un file GIF prendendo 2 o più immagini e salvare nella fotocamera Directory rotolo

https://github.com/bllakjakk/Giraffe

Il Codice principale di mettere a fuoco è come sotto:

[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]); 
    }]; 

}];

utilizza la libreria, come ho detto nel mio soluzione prima http://jitsik.com/wordpress/?p=208

Come verificare:

Fase 01: esegue il progetto demo.

Passaggio 02: Come indicato dall'applicazione, aggiungere 2 immagini e fare clic su Esporta.

Punto 03: Ora controlla il rullino fotografico troverai la gif creata.

precedente:

GIF è un formato proprietario, in modo che avrebbe bisogno di un terzo partito lib per salvarlo.

controllo seguente link: http://jitsik.com/wordpress/?p=208

+0

Ho creato una taglia se puoi mostrarmi un esempio di come questo potrebbe essere usato per salvare il rullino fotografico? –

+0

Anche se ho trovato una soluzione da solo, posso ricorrere a questo se non riesco a ridurre le dimensioni della GIF abbastanza a sufficienza da non bloccarsi su file più grandi. –

+2

Qualche idea su come farlo usando la struttura delle foto? – user379468

2

È stato aggiornato per funzionare con iOS 9 e la deprecazione di ALAssets? Non vedo chiamate simili in PHPhotoLibrary.

+0

come è questa una risposta? –

Problemi correlati