ImageView.setImageBitmap是空白 [英] ImageView.setImageBitmap is blank

查看:756
本文介绍了ImageView.setImageBitmap是空白的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了一个MediaStore图片并保存它。我可以看到我的画廊的形象。然而,当我尝试将位图图像设置为我的ImageView,就成了空白。

I took a picture using MediaStore and saved it. I can see the image in my Gallery. However when I try to set the image bitmap to my ImageView, it becomes blank.

String abspath;

public void getPicture(View view) { 

        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        File imageFile = new File(PATH + "/image.jpg");
        abspath = imageFile.getAbsolutePath().toString();

        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse(abspath)))

        startActivityForResult(cameraIntent, RESULT_CAMERA);        
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    setContentView(R.layout.activity);

    if(requestCode == RESULT_CAMERA) {
            // open the image file
            Bitmap bitmap = BitmapFactory.decodeFile(abspath);  
            ImageView imageView = (ImageView)findViewById(R.id.imageView);

            imageView.setImageBitmap(bitmap); //imageView is now blank, although my saved image is not a blank image
            //imageView.setImageURI(Uri.fromFile(new File(abspath))); same result

}

}

推荐答案

我不知道,但也有一些变化,而从相机获得的图像作为的onActivityResult()的一部分在API版本17.you是通过使用获得的ImagePath形象努力。但实际上相机不其存储由下式给出name.It使用它自己的机制来存储image.You可以进入画廊看到的。图像名称会比你给什么不同。建议最好是使用ContentResolver的查询是最后captured.You可以修改查询按照您的要求的形象。下面仅仅是一个例子。

I don't know but there are some changes while getting image from Camera as part of onActivityResult() in API version 17.you are trying by getting the image by using imagePath. But actually camera doesn't store it by given name.It uses the its own mechanism to store the image.You can see by going into gallery. Image name will be different than what you had given. As recommended It's better to use ContentResolver to query the image which is last captured.You can modify the query as per your requirement. Below is just an example.

 protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PIC_CAMERA_IMAGE && resultCode == RESULT_OK) {

            Uri selectedImage=null;
                    // Works on API 16 or Below
            if(null!=data)
            {
                selectedImage = data.getData(); 
            }
                    // For API 17 
            if(null==selectedImage)
            {
                final ContentResolver cr = getContentResolver();    
                final String[] p1 = new String[] {
                        MediaStore.Images.ImageColumns._ID,
                        MediaStore.Images.ImageColumns.DATE_TAKEN
                };                  
                Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC");     
                if ( c1.moveToFirst() ) {
                    String uristringpic = "content://media/external/images/media/" +c1.getInt(0);
                    selectedImage = Uri.parse(uristringpic);                    
                }
                c1.close();

            }


        }

    }

这篇关于ImageView.setImageBitmap是空白的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆