2014-10-10 8 views
10

पढ़ने के लिए धन्यवाद। मैं एक GIF इस सवाल से तरीकों का उपयोग कर बना लिया है:जेनरेट जीआईएफ को कैमरा रोल में सेव करें?

Create and and export an animated gif via iOS?

मैं केवल विधि, ALAssetLibrary के कैमरा रोल करने के लिए गैर JPG/PNG छवियों को बचाने के लिए सक्षम होने के लिए प्रतीत होता है कि उपयोग करने के लिए कोशिश कर रहा हूँ writeImageDataToSavedPhotosAlbum:metadata:completionBlock:

मैं इस तरह अस्थायी निर्देशिका करने के लिए Gif बचाने:

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

तब तक पहुँचने NSData की तरह:

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

GIF के रूप में मैं एक UIImageView में यह प्रदर्शित करने में सक्षम हूँ बनाई गई है, लेकिन जब मैं इसे सफल (कोई त्रुटि) के रूप में विधि रिटर्न को बचाने के लिए, कोशिश, लेकिन वास्तव में (बचाने के लिए नहीं है के लिए Nil रिटर्न NSURL * assetURL और कैमरा रोल में प्रकट नहीं होता है)।

कैमरा रोल में सफलतापूर्वक सहेजने के लिए मैं अपने जीआईएफ कैसे प्राप्त कर सकता हूं?

+0

जोड़ा गया 2 समाधान। सबसे पहले मौजूदा जीआईएफ को कैमरा रोल में सेव करें। दूसरा कैमरा लाइफ में जीआईएफ बनाने और सहेजने के लिए लाइब्रेरी (http://jitsik.com/wordpress/?p=208) का उपयोग करता है। मेरे जीआईटी कांटा की जांच करें। – bllakjakk

उत्तर

2

मैंने पाया मुद्दा यह है कि मैं वास्तव में फ़ाइल से GIF हड़पने करने में असमर्थ था। मैंने CGImageDestinationCreateWithURL से CGImageDestinationCreateWithData का उपयोग करने से स्विच किया और GIF डेटा को पकड़ने के लिए CFMutableDataRef का उपयोग किया। मुझे नहीं पता क्यों, लेकिन इससे writeImageDataToSavedPhotosAlbum काम के साथ कैमरा रोल में बचत हुई।

10

**

समाधान 01: केवल कैमरा रोल

**

करने के लिए मौजूदा 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]); 
}]; 

: अब मैं मीडिया निर्देशिका फ़ाइल सहेजें संपत्ति यूआरएल उचित है। अब आप मीडिया निर्देशिका की जांच कर सकते हैं। आप सहेजे गए gif छवि का पता लगा सकते हैं।

Have Fun :)


**

समाधान 02: बनाना और कैमरा रोल

**

को GIF बचाने के डेमो

मैंने कैमरा रोल में जीआईएफ फाइलों को बनाने और सहेजने के लिए कुछ समाधान क्लोन किए। डेमो 2 या अधिक चित्रों को लेने के द्वारा एक GIF फ़ाइल बनाता है मुख्य कोड

और कैमरा में बचाने के रोल निर्देशिका

https://github.com/bllakjakk/Giraffe

ध्यान केंद्रित करने की तरह है: आप GitHub पर डाउनलोड कर सकते हैं और जाँच मेरी कांटा नीचे:

[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 मिलेंगे।

पिछला: ताकि आप इसे बचाने के लिए एक 3 पार्टी lib की आवश्यकता होगी

GIF, एक मालिकाना प्रारूप है।

जांच लिंक का पालन: http://jitsik.com/wordpress/?p=208

+0

मैंने एक बक्षीस बनाया है यदि आप मुझे नमूना दिखा सकते हैं कि इसका उपयोग कैमरा रोल में सहेजने के लिए कैसे किया जा सकता है? –

+0

जबकि मुझे स्वयं एक समाधान मिला, तो मैं इसका सहारा ले सकता हूं अगर मैं बड़ी फ़ाइलों पर क्रैश न होने के लिए जीआईएफ के आकार को काट नहीं सकता। –

+2

फोटो फ्रेमवर्क का उपयोग करके ऐसा करने का कोई विचार है? – user379468

2

क्या इसे आईओएस 9 के साथ काम करने के लिए अद्यतन किया गया है, और अलास्सेट के बहिष्कार? मुझे PHPhotoLibrary में समान कॉल दिखाई नहीं दे रही हैं।

+0

यह एक उत्तर कैसे है? –

संबंधित मुद्दे