onPictureTaken
में, मैं निम्नलिखित करना चाहते हैं:बिटमैप प्रोसेसिंग करते समय "मेमोरी अपवाद से बाहर" कैसे बचें?
Bitmap decodedPicture = BitmapFactory.decodeByteArray(data, 0, data.length);
Matrix matrix = new Matrix();
matrix.preScale(-1.0f, 1.0f);
Bitmap picture = Bitmap.createBitmap(decodedPicture, 0, 0, decodedPicture.getWidth(), decodedPicture.getHeight(), matrix, false);
View v1 = mainLayout.getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap screenshot = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
Bitmap scaledPicture = Bitmap.createScaledBitmap(picture, screenshot.getWidth(), screenshot.getHeight(), true);
Bitmap compos = Bitmap.createBitmap(scaledPicture.getWidth(), scaledPicture.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(compos);
canvas.drawBitmap(scaledPicture, new Matrix(), null);
canvas.drawBitmap(screenshot, new Matrix(), null);
MediaStore.Images.Media.insertImage(getContentResolver(), compos, "name" , "description");
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
मेरी केवल आवश्यकता है कि मैं एक उच्च गुणवत्ता वाले तस्वीर को बचाने के लिए करना चाहते हैं ... लगता है मुझे लगता है कि बलिदान करने के लिए हो सकता है।
मेरे नेक्सस 4 और नए उपकरणों पर, यह कोड ठीक चलता है और अपेक्षित है। लेकिन पुराने उपकरणों पर कम स्मृति है, मैं राम से बाहर चला रहा हूँ! :(
मेमोरी सीमा के बिना चलने के बिना मैं वही छवि मैनिपुलेशन कैसे करूं ?? मैं प्रदर्शित करने की कोशिश नहीं कर रहा हूं स्क्रीन पर इन छवियों को प्रदर्शित करें, इसलिए समाधानों को स्केल किए गए चित्र डॉन के साथ करना है वास्तव में यहां लागू नहीं है ...
आप कुछ संदर्भों को शून्य कर सकते हैं, और फिर एक जीसी संकेत पर है? इसे कुछ अनावश्यक डेटा हटा देना चाहिए ... – tilpner