2012-04-17 13 views
6

में JPEG छवि के आकार को कम करने के लिए अपने आवेदन में, मैं कैमरा अनुप्रयोग लागू और एक तस्वीर ले और एक विशेष निर्देशिका में यह बचत (उदाहरण के लिए/sdcard आदि)कैसे एंड्रॉयड

तस्वीर एक JPEG के रूप में सहेजा जाता है कर रहा हूँ छवि। मैं छवि के आकार को कैसे कम करूं? क्या कोई उपलब्ध छवि एन्कोडर या संपीड़न उपलब्ध है?

मैं में एक और पोस्टिंग में आए: Android Reduce Size Of Camera Picture

लेकिन इस छवि स्केलिंग है। मैं ऐसा कुछ ढूंढ रहा हूं जो संपीड़ित या एन्कोड कर सके। क्या यह संभव है?

अग्रिम धन्यवाद, पेरूमल

+0

http://stackoverflow.com/questions/4943016/android-how-to-compress-or-downsize-an-image – m4n07

+0

http://stackoverflow.com/प्रश्न/6464062/संपीड़ित छवि में एंड्रॉयड – m4n07

+0

[इस लिंक से एक नजर डालें] [1] [1]: http://stackoverflow.com/questions/10081008/outofmemoryerror-in- खेल-के साथ-बहुत-छोटी छवियां/10086141 # 10086141 आशा है कि यह आपकी मदद करेगा। –

उत्तर

13

मुझे यकीन है कि वैसे भी आप छवि के आकार को कम one.For इस कोशिश कर सकते हैं नहीं कर रहा हूँ सबसे पहले आपको इसे विशेष निर्देशिका में सहेजने से पहले बिटमैप में कनवर्ट करना चाहिए, और बिटमैप को छवि की गुणवत्ता सेट करें और इसे सही पथ पर लिखें। छवि की गुणवत्ता को बदला जा सकता है और उम्मीद है कि इससे आपको कम करने में मदद मिलेगी छवि का आकार।

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);` 

API:

compress (Bitmap.CompressFormat format, int quality, OutputStream stream) 
+0

'100' का अर्थ अच्छा या बुरा है? – faisal1208

+0

@ faisal1208 100 का मतलब सर्वोत्तम गुणवत्ता है। – Adrian

1

हो सकता है कोड के नीचे टुकड़ा उपयोगी है के लिए आप

 opt = new BitmapFactory.Options(); 
     opt.inTempStorage = new byte[16 * 1024]; 
     opt.inSampleSize = 4; 
     opt.outWidth = 640; 
     opt.outHeight = 480; 
     Bitmap imageBitmap = BitmapFactory 
       .decodeStream(in, new Rect(), opt); 
     Bitmap map = Bitmap.createScaledBitmap(imageBitmap, 100, 100, true); 
     BitmapDrawable bmd = new BitmapDrawable(map); 
     ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
     map.compress(Bitmap.CompressFormat.PNG, 90, bao); 
     ba = bao.toByteArray(); 
     imagedata=Base64.encodeBytes(ba);