2013-07-31 9 views
8

मैं चाहता हूं कि मेरे ऐप का कोई उपयोगकर्ता रन टाइम पर एक छवि को संशोधित करने में सक्षम हो।एंड्रॉइड में आकार बदलने योग्य छवि दृश्य कैसे बनाएं

enter image description here

मैं बहुत समय बिताया है इस शोध: उपयोगकर्ता छवि पर-व्यू के कोने पर दोहन और उसे खींचकर के रूप में निम्न चित्र में सचित्र द्वारा छवि ऊंचाई और चौड़ाई को संशोधित करने में सक्षम होना चाहिए और मुझे Making Sense of Multitouch और Resize a large bitmap file to scaled output file पिनच ज़ूम की तरह कुछ मिला लेकिन इनमें से कोई भी मेरी आवश्यकताओं से मेल नहीं खाता है।

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

public static Bitmap decodeFile(File f,int WIDTH,int HIGHT){ 

    try { 
     //Decode image size 
     BitmapFactory.Options o = new BitmapFactory.Options(); 
     o.inJustDecodeBounds = true; 
     BitmapFactory.decodeStream(new FileInputStream(f),null,o); 

     //The new size we want to scale to 
     final int REQUIRED_WIDTH=WIDTH; 
     final int REQUIRED_HIGHT=HIGHT; 

     //Find the correct scale value. It should be the power of 2. 
     int scale=1; 
     while(o.outWidth/scale/2>=REQUIRED_WIDTH && o.outHeight/scale/2>=REQUIRED_HIGHT) 
      scale*=2; 

     //Decode with inSampleSize 
     BitmapFactory.Options o2 = new BitmapFactory.Options(); 
     o2.inSampleSize=scale; 
     return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); 
    } 
     catch (FileNotFoundException e) {} 
    return null; 

} 

अद्यतन:

अब सुचारू रूप से this सवाल के स्वीकार किए जाते हैं जवाब का उपयोग कर कैनवास में बिटमैप ड्राइंग का उपयोग कर काम कर रहे।

अब रीमिंग भाग फसल फ्रेम की तरह कुछ छवि के रूप में फ्रेम सेट कर रहा है।

कृपया इसे प्राप्त करने में मेरी सहायता करें।

+0

हाय, मैं ट्यूटोरियल देखा, लेकिन मुझे आप से पूछना चलो इस: बिंदु पक्षों पर स्थित हैं छवि केवल एक्स या केवल वाई अक्ष आंदोलन की अनुमति है? यदि ऐसा है, तो क्या आप कोड के उस अनुभाग में नहीं डाल सकते हैं, जहां '// दूरी की गणना की गई है' एक्स और/या वाई अक्ष पर छवि का एक सरल आकार बदलना और इसे 'छवि दृश्य' में अपडेट करना? – g00dy

+0

कोई बिंदु नहीं स्थित है। यह फ्रेम rescaling के बाद छवि आकार के अनुसार आना चाहिए। इसलिए इस फ्रेम को छवि के चारों ओर गतिशील रूप से हर बार उत्पन्न करना होगा। मैंने अपनी प्रश्न छवि बदल दी। कृपया इस नई छवि की जांच करें। धन्यवाद ... –

+0

मुझे लगता है कि अंक के साथ हिस्सा पहले से ही किया जा चुका है? क्या आपने अभी तक इसके लिए कुछ किया है या नहीं? – g00dy

उत्तर

1

आप इस इस library उपयोग cropimageview3 का उपयोग करने और नाव drawable में अपनी छवि सेट पूरा कर सकते हैं और आप कर चुके हैं

1

"आप इसे गलत कर रहे हैं"।

  1. आकार ImageView ही:

    इसके बजाय नई Bitmap हर बार बनाने के

    , तो आप कई विकल्प हैं।

  2. अपना खुद का View बनाएं और Canvas का उपयोग करके बिटमैप बनाएं। यह आपको Btimap खींचने देगा जैसा आप चाहते हैं।

यदि आप Canvas के साथ जाएंगे, तो उन "फसल-बिंदुओं" को प्रदर्शित करने के लिए आप उन्हें अपने कैनवास पर भी खींच सकते हैं। , अपने आकार व्यवहार को संभालने के लिए जब उपयोगकर्ता फसल अंक को छू लेती है -

  1. onTouchEvent: हालांकि, वांछित व्यवहार और उपस्थिति आप शायद के रूप में अच्छी उन तरीकों को ओवरराइड करने की आवश्यकता होगी प्राप्त करने के लिए।
  2. onMeasure - आपके View के आकार में थोड़ा वृद्धि करने के लिए, क्योंकि आपकी "फसल-पॉइंट" थोड़ा सा छवि से बाहर आती है।
+0

धन्यवाद मुझे चिकनीता मिली है जो मैं चाहता हूं। मैं अब कैनवास का उपयोग कर रहा हूं..और फ्रेम के बारे में कोई सुझाव जैसे कि हम छवि फसल करते हैं। –

+0

@ संकेतछचला संपादित उत्तर –

+0

धन्यवाद मैं कार्यान्वित कर रहा हूं। –

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