2011-10-04 15 views
14

से स्केल किए गए बिटमैप को कैसे प्राप्त करें मेरे पास Activity है जिसमें एक छवि पर पिंच ज़ूम कार्यक्षमता के लिए XML में परिभाषित कस्टम ImageView है। अब, मेरी समस्या यह है कि मैं पिंच ज़ूम कार्यक्षमता से स्केल किए गए Bitmap को प्राप्त करना चाहता हूं। उदाहरण के लिए यदि उपयोगकर्ता छवि पर ज़ूमिंग करता है, तो मैं छवि के सटीक आकार और स्थिति को बिटमैप के रूप में स्टोर करना चाहता हूं।ImageView

यह मेरा कस्टम छवि दृश्य एक्सएमएल में घोषित किया गया है।

<com.cam.view.PinchZoom_ImageView 
    android:id="@+id/gallery_selected_image_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/icon" 
    android:scaleType="center" 
/> 

अद्यतन:

मैं बढ़ाया छवि प्राप्त करने के लिए नीचे दिए गए कोड कोशिश कर रहा हूँ, लेकिन यह एक खाली बिटमैप देता है।

 pinchZoom.setDrawingCacheEnabled(true); 
     pinchZoom.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
     pinchZoom.layout(0, 0, pinchZoom.getMeasuredWidth(), pinchZoom.getMeasuredHeight()); 
     pinchZoom.buildDrawingCache(true); 
     Bitmap_gallery_Item = Bitmap.createBitmap(pinchZoom.getDrawingCache()); 
     pinchZoom.setDrawingCacheEnabled(false); 

किसी भी मदद की सराहना की जाएगी। धन्यवाद

उत्तर

12

खैर, अंत में मैं विश्वास नहीं कर सकता कि यह सिर्फ एक एक पंक्ति कोड था। मैं अंततः matrix का उपयोग कर सफल रहा। समाधान बहुत आसान है कि मैं एक मैट्रिक्स में छवि के translation and scaling संग्रहित कर रहा था। इसलिए, मैंने अंतिम matrix को public static के रूप में घोषित किया और कैनवास पर एक बिटमैप बनाने के लिए उस मैट्रिक्स का उपयोग किया।

 Canvas comboImage = new Canvas(cs); 
     background = Bitmap.createScaledBitmap(background, width, height, true); 
     comboImage.drawBitmap(background, 0, 0, null); 
     comboImage.drawBitmap(foreground, PinchZoom_ImageView.matrix, null); 

जैसा कि आप यहां देख सकते हैं PinchZoom_ImageView.matrix। यह matrix है जिसमें स्केल किए गए और अनुवादित छवि की मेरी अंतिम स्थिति शामिल है जिसे मैंने public static के रूप में घोषित किया था।

+0

अच्छा एक .... यह प्रत्येक छवि दृश्य पर काम करेगा जो एक्सएमएल में घोषित किया गया था? – Siten

+0

हाँ यह किसी भी छवि के लिए काम करेगा जो आप ज़ूम लागू कर रहे हैं। –

+0

@ ललित पॉपटानी - ऐसा लगता है कि यह केवल तभी काम करता है जब ImageView मैट्रिक्स स्पष्ट रूप से सेट हो। ऐसा करने के लिए बहुत अच्छा होगा कि वर्तमान में स्केल प्रकार के बावजूद वर्तमान में प्रदर्शित बिटमैप को निकाल दें। – Lee

0

यदि आपके पास scaleType="fitxy" है तो आप ImageView की चौड़ाई/ऊंचाई को बढ़ाने या घटाने के लिए स्केलिंग कारक का उपयोग कर सकते हैं - इसका मतलब यह भी है कि आप छवि की सटीक ऊंचाई/चौड़ाई को वापस खींच सकते हैं क्योंकि इसमें समान आयाम हैं क्योंकि यह कंटेनर है।

HTH

+0

मेरे पास फिटक्सी दोस्त नहीं है, मेरी छवि चल रही है और यह भी ज़ूमिंग की अनुमति देता है, इसलिए मैं बिटमैप को अनुवाद के साथ-साथ छवि के स्केलिंग के बाद स्टोर करना चाहता हूं। धन्यवाद –

+0

ठीक है - मुझे नहीं पता कि स्थिति क्या है, लेकिन क्या आप छवि दृश्य को कार्यान्वित करके छवि को चलने योग्य और ज़ूमिंग नहीं कर सकते? – Graeme

+0

उपरोक्त माध्यम से आप कह रहे हैं कि स्केल टाइप = "fitxy" का उपयोग करके? –

0

इस पोस्ट में गैलरी से चित्र को काटने में शामिल हैं और छवि फसल और imageView में फसली छवि और शो को बचाने के लिए अनुमति देता है।

लगता है यह तुम्हारी मदद करेगा कुछ फैली

Image Crop and show cropped Image in View

+0

धन्यवाद। मैं जांचूंगा और आपको दोस्त को बता दूंगा .. –

+0

@ ललित पॉपटानी ठीक दा मचान – Venky

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