将Parcelable设置为ImageView图像

时间:2016-09-26 13:47:08

标签: java android

我一直在使用这个库https://android-arsenal.com/details/1/4072从图片和相机中获取图像以设置为个人资料图片。

    TextView chooseImageTextView = (TextView) findViewById(R.id.signUp_uploadPicture_textView);
    chooseImageTextView.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ImagePicker.create((Activity) SignUpActivity.this)
                            .folderMode(true)
                            .folderTitle("Select image folder")
                            .imageTitle("Select image")
                            .single()
                            .showCamera(true)
                            .imageDirectory("Camera - Bond Messenger")
                            .start(REQUEST_CODE_PICKER);
                }
            }
    ); 

并且它工作得非常好,但结果图像是从库导入的Image类型的Parcelable ArrayList,所以这里出现了问题

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_PICKER && resultCode == RESULT_OK && data != null) {

        ArrayList<Image> images = data.getParcelableArrayListExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES);

        profilePictureCircleImageView.setImageBitmap(images.get(0));
    }
}

尝试将图像设置为图像中的profilePictureCircleImageView

时出错

所以我尝试将它投射到Bitmap,BitmapDrawable和Drawable但没有工作

所以请帮忙吗?谢谢

2 个答案:

答案 0 :(得分:0)

快速浏览您提供的库的源代码会发现Image类不是来自android包android.media.Image

See Image.class from library on github

因此,由于该类保存图像的路径,您可以执行以下操作。

Bitmap bmImg = BitmapFactory.decodeFile(images.get(0).getPath());
profilePictureCircleImageView.setImageBitmap(bmImg);

答案 1 :(得分:0)

返回的不是实际图像,而是保存图像路径的对象。 你必须手动加载它:

String path = images.get(i).getPath()

Bitmap bitmap = BitmapFactory.decodeFile(path, null);

profilePictureCircleImageView.setImageBitmap(bitmap);