从SD卡读取图像文件到位图,为什么我得到一个NullPointerException?

我怎样才能从SD卡读取图像文件到位图?

_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的位图。 这意味着位图是空的。 但我有一个存储在SD卡中的图像“.jpg”文件为“flower2.jpg”。 有什么问题?

MediaStore API可能会丢弃alpha通道(即解码为RGB565)。 如果你有一个文件path,直接使用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); 

有用:

 Bitmap bitmap = BitmapFactory.decodeFile(filePath); 

我写了下面的代码将SD卡中的图像转换为Base64编码的string,作为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);