एक छवि फ़ाइल को sdcard से बिटमैप में पढ़ना, मुझे NullPointerException क्यों मिल रही है?


105

मैं एसडीकार्ड से बिटमैप में एक छवि फ़ाइल कैसे पढ़ सकता हूं?

 _path = Environment.getExternalStorageDirectory().getAbsolutePath();  

System.out.println("pathhhhhhhhhhhhhhhhhhhh1111111112222222 " + _path);  
_path= _path + "/" + "flower2.jpg";  
System.out.println("pathhhhhhhhhhhhhhhhhhhh111111111 " + _path);  
Bitmap bitmap = BitmapFactory.decodeFile(_path, options );  

मुझे बिटमैप के लिए NullPointerException मिल रही है। इसका मतलब है कि बिटमैप शून्य है। लेकिन मेरे पास एक छवि है ".jpg" फ़ाइल sdcard में "flower2.jpg" के रूप में संग्रहीत है। समस्या क्या है?

जवाबों:


265

MediaStore API शायद अल्फा चैनल को फेंक रहा है (यानी RGB565 को डिकोड करना)। यदि आपके पास कोई फ़ाइल पथ है, तो सीधे BitmapFactory का उपयोग करें, लेकिन इसे एक ऐसे प्रारूप का उपयोग करने के लिए कहें जो अल्फा को संरक्षित करता है:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);
selected_photo.setImageBitmap(bitmap);

या

http://mihaifonoage.blogspot.com/2009/09/displaying-images-from-sd-card-in.html


3
selected_photoयहाँ क्या है
स्वायत्त

नमस्ते! एल्बम में सहेजी गई छवि 3840x2160 है लेकिन इस विधि के माध्यम से सर्वर पर अपलोड की गई छवि 1080x1920 की है
शजील अफ़ज़ल

@ ParagS.Chandakkar यह एक ImageView हो सकता है जहाँ आप डीकोड की गई फ़ाइल प्रदर्शित कर सकते हैं।
PinoyCoder


28

इस कोड को आज़माएं:

Bitmap bitmap = null;
File f = new File(_path);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
try {
    bitmap = BitmapFactory.decodeStream(new FileInputStream(f), null, options);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}         
image.setImageBitmap(bitmap);

6

मैंने JSON ऑब्जेक्ट के रूप में भेजने के लिए sdcard से एक छवि को बेस 64 एनकोडेड स्ट्रिंग में बदलने के लिए निम्न कोड लिखा था।

String filepath = "/sdcard/temp.png";
File imagefile = new File(filepath);
FileInputStream fis = null;
try {
    fis = new FileInputStream(imagefile);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
}

Bitmap bm = BitmapFactory.decodeStream(fis);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.JPEG, 100 , baos);    
byte[] b = baos.toByteArray(); 
encImage = Base64.encodeToString(b, Base64.DEFAULT);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.