2010-07-22 24 views
13

एंड्रॉइड पर एनिमेटेड जीआईएफ खेलने की कोशिश कर रहा है (देखें Android: How do a display a large animated gif given a url?)। यह चिकनी लेकिन कुछ भी है। एंड्रॉइड 1.5 पर, Movie.decodeStream()/decodeFile() एक शून्य देता है। एंड्रॉइड 1.6 पर, जीआईएफ फाइलों के साथ, यह शून्य अवधि के साथ एक शून्य आकार की फिल्म लौटाता है - स्पष्ट रूप से पर्याप्त नहीं है।फ्रेम में जीआईएफ स्प्लिट

संदर्भित प्रश्न जीआईएफ को फ्रेम में विभाजित करने का सुझाव देता है (और फिर इन्हें प्रस्तुत करता है)। मैं इसे कैसे पूरा कर सकता हूं, कृपया?

संपादित करें: विंडोज़ में जीएनयू गिफलिब के साथ मेरे जीआईएफ खोलने का प्रयास किया। यह बहुत पहले फ्रेम पर दबाया गया। जीआईएफ स्वयं ठीक है, सभी ब्राउज़र्स (एंड्रॉइड की बचत करें) डिस्प्ले और इसे ठीक से एनिमेट करें।

EDIT2: giflib 4.1.4 के साथ काम किया। सुनिश्चित नहीं है कि 4.1.6 में क्या टूटा हुआ था, लेकिन वहां आप जाते हैं। अगला कदम: एनडीके के माध्यम से एंड्रॉइड के लिए giflib बनाएं, किसी भी तरह बिटमैप क्लास के साथ एकीकृत करें।

EDIT3: giflib यह है। Bitmap.copyPixelsFromBuffer के साथ संयोजन में। रंग अभी सभी पूछताछ कर रहे हैं, लेकिन मूल डिजाइन व्यावहारिक लगता है।

उत्तर

1

giflib 4.1.4 और एनडीके। आपको एंड्रॉइड के ARGBxxxx स्वरूपों में से किसी एक से मेल खाने के लिए जीआईएफ में पैलेट रंगों को मैन्युअल रूप से हल करना होगा, फिर copyPixelsFromBuffer() के माध्यम से Bitmap ऑब्जेक्ट पर पिक्सेल सरणी पास करें। यदि आप पारदर्शिता और/या एनीमेशन चाहते हैं, तो आपको एक्सटेंशन ब्लॉक के माध्यम से जाना होगा और कोड 0xf9 के साथ एक को देखना होगा।

मेरी कोड साझा, मार्गदर्शन के साथ, यहाँ: http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

+0

आप किसी भी संयोग से एक नमूना कोड है? यदि हां, तो कृपया इसे पोस्ट करें। –

+0

यह काफी लंबा है। मैं ई-मेल कर सकता था। –

+0

शायद आप पेस्टबिन पर पोस्ट कर सकते हैं, या गिटहब या कहीं और इस्तेमाल कर सकते हैं? –

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