2010-12-15 8 views
8

मुझे आईओएस एनिमेटेड-जीआईएफ को संभालने के तरीके से परेशानी हो रही है। मुझे पता है कि आप एनिमेटेड-जीआईएफ का उपयोग UIImageView पर नहीं कर सकते हैं और आपको UIImageView पर कस्टम एनीमेशन का उपयोग करना होगा।एनिमेटेड-जीआईएफ छवियों को NSSocket के माध्यम से एनएसडीएटा के रूप में प्राप्त किया गया है जो फ्रेम को विभाजित करने में असमर्थ हैं

लेकिन ..

मैं एक जावा सर्वर है कि एक socketstream के माध्यम से GIF चित्र भेजता है। आईओएस (आईफोन) उस स्ट्रीम को प्राप्त करता है और इसे एनएसडीटा प्रकार में परिवर्तित करता है। मैं UIImageView में इस छवि को कैप्चर करने और प्रदर्शित करने में सफल रहा हूं लेकिन आप में से कई पहले से ही जानते हैं .. यह केवल पहला फ्रेम प्रदर्शित करता है।

मुझे अलग-अलग छवियों में जीआईएफ को डीकोड करने के लिए कुछ कोड भी मिला, लेकिन वह कोड जीआईएफ फ़ाइल से काम करता है, न कि एनएसडीटा।

प्रश्न: मैं एनएसडीएटा फ़ाइल को अलग-अलग छवियों में कैसे परिवर्तित करूं और उन्हें एनएसएआरएआरई में एनीमेशन के रूप में उपयोग करने के लिए कैसे बदलूं?

नोट: प्राप्त एनएसडीटा में एक छवि और कुछ पाठ दुर्लभ चरित्र से अलग होते हैं। इसलिए एनएसडीटा इस तरह दिखता है: [छवि] [विभाजक] [पाठ]।

आशा किसी ने मुझसे कुछ संकेत या कुछ नमूने पहले से साथ काम करने के ..

धन्यवाद, मैं खोज रखेंगे दे सकते हैं जब तक आप या मुझे एक जवाब :)

+0

देखकर वहाँ के रूप में एक NSData वस्तु में एक से अधिक छवियाँ हैं कोड के आधार पर एनीमेशन समय हैंडल किया जाता है, अपने विभाजक वर्ण भी बीच मौजूद है [ पाठ] और निम्नलिखित [छवि]? – Endemic

+0

ठीक है, मैं 1 जीआईएफ छवि और कुछ पाठ भेजता हूं। तो मैं एकाधिक (या एक) फ्रेम भेजता हूं और फिर एक विभाजक और फिर पाठ .. तो पाठ के बाद कोई और छवि नहीं है .. – stackr

उत्तर

14

पाता है जब तक आप को लक्षित कर रहे उपकरणों आईओएस 4 से पहले, इमेजियो का उपयोग करें।

NSMutableArray *frames = nil; 
CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)data, NULL); 
if (src) { 
    size_t l = CGImageSourceGetCount(src); 
    frames = [NSMutableArray arrayWithCapacity:l]; 
    for (size_t i = 0; i < l; i++) { 
     CGImageRef img = CGImageSourceCreateImageAtIndex(src, i, NULL); 
     if (img) { 
      [frames addObject:[UIImage imageWithCGImage:img]]; 
      CGImageRelease(img); 
     } 
    } 
    CFRelease(src); 
} 
+0

मेरे लिए काम किया। मुझे '// //' पूर्ण फ़ाइल पथ प्राप्त होता है: एनएसएसटींग * gifPath = [[NSBundle mainBundle] pathForResource: @ "AJAX-loader" टाइप: @ "gif"]; यदि (! GifPath) { NSLog (@ "त्रुटि: फ़ाइल पथ गलत"); } एनएसईआरआर * त्रुटि = शून्य; // छवि बाइट्स प्राप्त करें: एनएसडीएटा * gifData = [NSData डेटा WithContentsOfFile: gifPath विकल्प: शून्य त्रुटि: और त्रुटि]; यदि (! GifData) { एनएसएलओजी (@ "त्रुटि:% @", त्रुटि); // एनएसएलओजी (@ "त्रुटि: gif छवि विफलता"); } ' –

2

मैं एक आवरण है कि यह भी anomie से

https://gist.github.com/3894888

+0

यह बिल्कुल एक जवाब नहीं है। वह पूछ रहा है कि कैसे, एक रैपर के लिए एक लिंक के लिए नहीं। – Austin

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

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