এসডিকার্ড থেকে বিটম্যাপে একটি চিত্র ফাইল পড়া, আমি কেন নুলপয়েন্টারএক্সসেপশন পাচ্ছি?


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 );  

আমি বিটম্যাপের জন্য নালপয়েন্টার এক্সসেপশন পাচ্ছি। এর অর্থ বিটম্যাপটি নাল ull তবে আমার কাছে একটি ছবি ".jpg" ফাইলটি "ফুল 2.jpg" হিসাবে এসডকার্ডে সঞ্চিত রয়েছে। সমস্যা কি?

উত্তর:


265

মিডিয়াস্টোর এপিআই সম্ভবত আলফা চ্যানেলটি ফেলে দিচ্ছে (অর্থাত্‍ আরজিবি 565 এ ডিকোডিং)। আপনার যদি কোনও ফাইলের পাথ থাকে তবে সরাসরি বিটম্যাপফ্যাক্টরিটি ব্যবহার করুন, তবে আলফা সংরক্ষণ করে এমন ফর্ম্যাট ব্যবহার করতে বলুন:

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
শাজিল আফজাল

@ প্যারাগএস.চান্ডাককর এটির চিত্রদর্শন হতে পারে যেখানে আপনি ডিকোডড ফাইলটি প্রদর্শন করতে পারেন।
পিনয়কোডার


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 অবজেক্ট হিসাবে প্রেরণে একটি চিত্র এসডকার্ড থেকে একটি বেস 64 এনকোড স্ট্রিংয়ে রূপান্তর করতে নিম্নলিখিত কোডটি লিখেছি nd এবং এটি দুর্দান্ত কাজ করে:

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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.