【问题标题】:Android get image to Bitmap from filepathAndroid从文件路径获取图像到位图
【发布时间】:2015-08-19 06:29:23
【问题描述】:

我正在尝试从电话上的特定文件路径设置图像。文件路径是手机上的照片。文件路径可能如下所示

/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
  • 最好使用AsyncTask从url下载图片。
  • 图片在手机上,不在网上
  • 你能发帖imgurl吗?它实际上是一个文件路径。不是吗?
  • 使用Bitmap bitmap = BitmapFactory.decodeFile(filePath)

标签: java android android-studio bitmapimage


【解决方案1】:

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

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

【讨论】:

  • 图片在手机上,不在网上
【解决方案2】:

试试这个:

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

【讨论】:

    【解决方案3】:

    试试这个,

         @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();
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2019-03-28
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 2012-03-05
      相关资源
      最近更新 更多