java - 从 Uri 获取位图

标签 java android android-bitmap

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_image);

   imageView = (ImageView) findViewById(R.id.imageView);

    Intent intent = getIntent();
    Uri imageUri = intent.getData();
   // Picasso.with(this).load(imageUri).into(imageView);

    if(imageUri == null){
        Log.d(TAG, "Check");
    }






        //BitmapFactory.Options options = new BitmapFactory.Options();
     //   options.inSampleSize = 8;
     //   bm = MediaStore.Images.Media.getBitmap(getContentResolver(),imageUri);

    Bitmap bm = null;

    try{
        InputStream image;
    try{
        image = getContentResolver().openInputStream(imageUri);
        bm = BitmapFactory.decodeStream(image);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    }
    catch (Exception e){
        e.printStackTrace();
    }




    //BitmapFactory.Options options = new BitmapFactory.Options();
   // bm = BitmapFactory.decodeFile(file.getAbsolutePath(),options);


    if ((bm == null)) {
        prints("It doesn't work");
    }

    //Log.d(TAG,"Going to convert image.");
      imageView.setImageBitmap(bm);

我查看了一堆 StackOverFlow 问题,我已经尝试了所有这些问题,正如您在注释代码中看到的那样。我试图获取一张在拍摄照片时未更改的位图。位图的像素位置对于我的目标至关重要。图像质量很高,文件可能更大。我的位图始终为空,我已确保我的 Uri 不是空的。有任何想法吗?

最佳答案

我认为下面的代码会对您有所帮助

  private void setImage(String path, CircleImageView img) {

    options = new DisplayImageOptions.Builder()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .showImageOnLoading(R.drawable.user)
            .showImageForEmptyUri(R.drawable.user)
            .showImageOnFail(R.drawable.user)
            .build();

    ImageLoader.getInstance().displayImage(path, img, options, new SimpleImageLoadingListener() {

        @Override
        public void onLoadingStarted(String imageUri, View view) {
            super.onLoadingStarted(imageUri, view);
        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
            super.onLoadingFailed(imageUri, view, failReason);
        }

        @Override
        public void onLoadingCancelled(String imageUri, View view) {
            super.onLoadingCancelled(imageUri, view);
        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            super.onLoadingComplete(imageUri, view, loadedImage);
        }
    }, new ImageLoadingProgressListener() {
        @Override
        public void onProgressUpdate(String s, View view, int i, int i1) {

        }
    });
}

使用通用图像加载器SimpleImageLoadingListener()

关于java - 从 Uri 获取位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690929/

相关文章:

java - 如何在 Java 应用程序中使用 TypedActor?

java - 吉利德 GWT 与 playframework

java - 捕获编号格式异常

android - 如何将一个 fragment 传递给选项卡菜单中的另一个 fragment ?

Android,内存不足转换为黑白

android - 纹理 View 视频和位图显示

java - 打印二维锯齿状数组中的字符串组合

java - Android 应用程序支持主要的 android 版本

android - 我无法从 firebase 数据库中提取相应 uid 的数据