2016-12-02 2 views
4

Cela peut être une question d'amateur, mais bien que j'ai cherché Stack Overflow de manière extensive, je n'ai pas été en mesure d'obtenir une réponse à mon problème spécifique.Swift - Créer un GIF à partir d'images et le transformer en NSData

J'a réussi à créer un fichier GIF à partir d'un tableau d'images en suivant un exemple Github:

func createGIF(with images: [NSImage], name: NSURL, loopCount: Int = 0, frameDelay: Double) { 

    let destinationURL = name 
    let destinationGIF = CGImageDestinationCreateWithURL(destinationURL, kUTTypeGIF, images.count, nil)! 

    // This dictionary controls the delay between frames 
    // If you don't specify this, CGImage will apply a default delay 
    let properties = [ 
     (kCGImagePropertyGIFDictionary as String): [(kCGImagePropertyGIFDelayTime as String): frameDelay] 
    ] 


    for img in images { 
     // Convert an NSImage to CGImage, fitting within the specified rect 
     let cgImage = img.CGImageForProposedRect(nil, context: nil, hints: nil)! 

     // Add the frame to the GIF image 
     CGImageDestinationAddImage(destinationGIF, cgImage, properties) 
    } 

    // Write the GIF file to disk 
    CGImageDestinationFinalize(destinationGIF) 
} 

Maintenant, je voudrais tourner le GIF réelle dans NSData je peux le télécharger à Firebase, et être capable de le récupérer sur un autre appareil. Pour atteindre mon objectif, j'ai deux options: Soit trouver comment utiliser le code ci-dessus pour extraire le GIF créé (qui semble être créé directement lors de la création du fichier), soit utiliser les images sur les paramètres de la fonction pour créer un nouveau GIF mais le garder au format NSData.

Est-ce que quelqu'un a des idées sur la façon de le faire?

+2

Vous écrivez le GIF à une URL. Vous pouvez donc obtenir les données en utilisant '[NSData dataWithContentOfURL: destinationURL]'. –

+0

Merci .. !! C'est une réponse valide. Écris-le comme tel, donc je peux l'approuver. –

+0

Si vous avez trouvé cette question pertinente, j'apprécierais également un upvote :) –

Répondre

0

Comme personne allé de l'avant pendant plus de six mois, je me contenterai de mettre la réponse du commentaire de @Sachin Vas ici:

Vous pouvez obtenir les données à l'aide NSData(contentsOf: URL)