2012-12-27 8 views
5

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

इस समय मैंने सापेक्ष आसानी से उपर्युक्त कार्यक्षमता को कार्यान्वित करने में कामयाब रहा है। मेरी समस्या ImageView पर छवि में गतिशील रूप से छवि जोड़ने में निहित है। जैसा कि आप में से कई जानते हो; बाइंडर लेनदेन बफर का सीमित निश्चित आकार है, वर्तमान में 1 एमबी, जिसे प्रक्रिया के लिए प्रगति पर सभी लेनदेन द्वारा साझा किया जाता है। इस प्रकार मैं केवल अपने छवि दृश्य में बिटमैप के संकुचित संस्करणों को लोड करने में सक्षम हूं और यह मेरे लिए एक बड़ी समस्या प्रस्तुत करता है (मेरा प्रोग्राम मुख्य रूप से टैबलेट पर उपयोग के लिए डिज़ाइन किया गया है)। मैंने इस मुद्दे पर महत्वपूर्ण शोध किया है और पाया है कि कोई भी बिटमैप को कई छोटे बिटमैप्स में विभाजित कर सकता है और उन्हें BitmapRegionDecoder का उपयोग करके एक संगत छवि के भ्रम पैदा करने के लिए कई छवि दृश्यों में रख सकता है (जैसा कि इस thread में सुझाया गया है)। हालांकि इसने मुझे बड़ी छवियों को प्रदर्शित करने की सफलतापूर्वक अनुमति दी है, मुझे नहीं पता कि मुझे ImageView के कई उदाहरणों का उपयोग करके ज़ूमिंग कार्यक्षमता को कैसे कार्यान्वित करना है। क्या ऐसा करने का एक अपेक्षाकृत सरल तरीका है?

उत्तर

3

इस video from Google I/O पर एक नज़र डालें, जहां वे छवि संपादन के साथ एक उन्नत गैलरी ऐप विकसित करते हैं।

आप here एप्लिकेशन के लिए स्रोत कोड डाउनलोड कर सकते हैं। इस तरह यह छवि संपादन के लिए गतिविधि को खोलता है:

private OnItemClickListener mPhotoClickListener = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // User clicked on photo, open our viewer 
     final Intent intent = new Intent(AlbumActivity.this, PhotoActivity.class); 
     final Uri data = ContentUris.withAppendedId(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id); 
     intent.setData(data); 
     startActivity(intent); 
    } 
}; 

गैलरी भी छवि संपादन कार्यक्षमता लागू करता है। कोड सहायक हो सकता है।

3

क्या आपने इसे आजमाया? options.in JustDecodeBounds को सत्य पर सेट किया जाना चाहिए।

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(getResources(), R.id.myimage, options); 
int imageHeight = options.outHeight; 
int imageWidth = options.outWidth; 
String imageType = options.outMimeType; 

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html