Чтение файла изображения в растровое изображение с sdcard, почему я получаю исключение NullPointerException?
Как я могу прочитать файл изображения в растровое изображение с sdcard?
_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 для растрового изображения. Это означает, что растровое изображение имеет значение null. Но у меня есть образ ".jpg "файл, хранящийся в sdcard как" flower2.формат JPG." В чем проблема?
4 ответа:
API MediaStore, вероятно, выбрасывает альфа-канал (т. е. декодирование в RGB565). Если у вас есть путь к файлу, просто используйте BitmapFactory напрямую, но скажите ему использовать формат, который сохраняет alpha:
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
попробуйте этот код:
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);
Я написал следующий код для преобразования изображения из sdcard в строку с кодировкой Base64 для отправки в качестве объекта JSON.И он отлично работает:
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);