Android get Orientation of a camera Bitmap? And rotate back -90 degrees -


मेरे पास यह कोड है:

  // एक्टिवेटिव पर एक पिक्चर सार्वजनिक शून्य चयनित (int requestCode , इंट परिणामी कोड, आशय डेटा) {if (resultCode == RESULT_OK) {यदि (requestcode == ImageHelper.SELECT_PICTURE) {स्ट्रिंग तस्वीर = ""; उरी चयनित आईजेयूआरआई = डेटा.getData (); // ओआई फाइल प्रबंधक स्ट्रिंग फाइलमैनेजर स्ट्रिंग = चुने गए IMageUri.getPath (); // मीडिया गैलरी स्ट्रिंग चयनित IMagePath = ImageHelper.getPath (mycontext, selectedImageUri); चित्र = (selectedImagePath = अशक्त!) selectedImagePath: filemanagerstring;?   

...

गैलरी से यह केवल एक चित्र चयनकर्ता है। यह अच्छा है, लेकिन जब मैं एक तस्वीर दृश्य पर इस चित्र को खोलता हूं, कैमरे के साथ "पोर्ट्रेट मोड" पर चित्र लेते समय छवियां अच्छी लगती हैं, लेकिन चित्रों में "एलएंडसीएपीई मोड" कैमरा लेता है, जिसमें -90 डिग्री खोलता है।

मैं उन चित्रों को वापस कैसे घुमा सकते हैं? <प्री> बिटमैप आउटपुट = बिटमैप.क्रेडिटबिटामॅप (न्यूविड्थ, न्यूहाइट, कॉन्फ़िगरेशन.एआरजीबी_8888); कैनवास कैनवास = नया कैनवास (आउटपुट);

मैंने इसे करने की कोशिश की:

  लॉग। E ("w h", bitmap.getWidth () + "" + bitmap.getHeight ()); If (bitmap.getWidth () & lt; bitmap.getHeight ()) canvas.rotate (-90);   

लेकिन यह काम नहीं कर रहा है, सभी छवि आकार है: * 2560 1920 पिक्सेल (पोर्ट्रेट, और लैंडस्केप मोड सभी)

मैं LANDSCAPE को वापस घुमाने के लिए क्या कर सकता हूँ तस्वीरें?

धन्यवाद लेस्ली

अगर कोई फोटो डिजिटल कैमरा के साथ लिया जाता है या स्मार्टफ़ोन, छवि फ़ाइल के भाग के रूप में, रोटेशन अक्सर फोटो के डेटा में संग्रहीत किया जाता है आप एंड्रॉइड का उपयोग कर एक छवि के एक्जीफ मेटा-डेटा पढ़ सकते हैं।

सबसे पहले, ExifInterface बनाएँ:

  ExifInterface exif = नया ExifInterface (uri.getPath ());   

अगला, वर्तमान रोटेशन को ढूंढें:

  int rotation = exif.get attributeInt (ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);   

एक्सआईफ़ रोटेशन को डिग्री में परिवर्तित करें:

  इंट रोटेशन इनडेग्रेज़ = एक्सफ़ो डीडगेस (रोटेशन);   

जहां <प्री> निजी स्थिर इंट एक्स्फाटोडेग्रेज (इंट एक्झिओनेन्टेशन) {यदि (एक्फ़ोइरिएन्टेशन == एक्जीफ इंटरफ़ेस.ओआरआईएनटीटीएआरओटीएटीए 90) {वापसी 9 0; } और अगर (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) {वापसी 180; } और अगर (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) {वापसी 270; } वापसी 0; }

फिर एक छवि का प्रयोग करके चित्र को घुमाने के लिए छवि के वास्तविक रोटेशन का संदर्भ बिंदु के रूप में उपयोग करें। <पूर्व> मैट्रिक्स मैट्रिक्स = नया मैट्रिक्स (); अगर (रोटेशन! = 0 एफ) {matrix.preRotate (rotationInDegrees);}

आप नई घुमाए गए छवि को Bitmap.createBitmap पद्धति के साथ बनाते हैं जो एक < कोड> मैट्रिक्स पैरामीटर के रूप में:

  बिटमैप.क्रेतेबिटमैप (बिटमैप स्रोत, इंट एक्स, इंट y, इंट चौड़ाई, इंट ऊंचाई, मैट्रिक्स एम, बूलीयन फिल्टर)   

जहां मैट्रिक्स एम नया रोटेशन रखता है:

  बिटमैप एडजस्टेड बिटमैप = बिटमैप.क्रेटबिल्टमैप (स्रोतबिटमैप, 0, 0, चौड़ाई, ऊंचाई, मैट्रिक्स , सच);   

इन ट्यूटोरियल को उपयोगी स्रोत कोड उदाहरणों के लिए देखें:



Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -