从文件路径获取Android图像到位图

6

我正在尝试从手机上的特定文件路径设置图片。该文件路径是指手机上的照片。文件路径可能看起来像这样:

/storage/emulated/0/Pictures/picture.jpg

以下是代码。

Bitmap image = null;

//trying to set the image from filepath
try {
    image = BitmapFactory.decodeStream((InputStream) new URL(filepath).getContent());
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

if (image == null) {
    //This becomes true because the image is not set
    Toast.makeText(getApplicationContext(),"image == null",Toast.LENGTH_LONG).show();
}

最终,图像未设置。

它是URL还是URI - Emil
最好使用AsyncTask从URL下载图像。 - Rustam
你能发布 imgurl 吗?它实际上是一个文件路径,不是吗? - Emil
@老板,您说得对,这是一个文件路径 :) - Edvard Åkerberg
1
使用 Bitmap bitmap = BitmapFactory.decodeFile(filePath) - Emil
显示剩余2条评论
3个回答

22

使用此方法从文件路径获取位图

public Bitmap getBitmap(String path) {
Bitmap bitmap=null;
try {
    File f= new File(path);
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    bitmap = BitmapFactory.decodeStream(new FileInputStream(f), null, options);
    image.setImageBitmap(bitmap);
} catch (Exception e) {
    e.printStackTrace(); 
}
return bitmap ;
}

图片在手机上,而不是在互联网上。 - Edvard Åkerberg

6

尝试这个:

File sd = Environment.getExternalStorageDirectory();
File imageFile = new File(sd+filepath);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap image = BitmapFactory.decodeFile(imageFile.getAbsolutePath(),bmOptions);

0

试试这个,

     @Override
 public void onClick(View arg0) {
  // TODO Auto-generated method stub
  Intent intent = new Intent(Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
  startActivityForResult(intent, 0);
 }});
 }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

if (resultCode == RESULT_OK){
 Uri targetUri = data.getData();
 textTargetUri.setText(targetUri.toString());
 Bitmap bitmap;
 try {
  bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
  targetImage.setImageBitmap(bitmap);
 } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接