图像未保存在个人资料图片中

时间:2016-03-30 05:41:45

标签: android

这是使用的链接...... http://javatechig.com/android/writing-image-picker-using-intent-in-android问题是图片没有保存。当我选择图片时它会进入ImageView。但是当我从这个活动以及app中出来时,它没有保存......请帮助我。

任何帮助都将不胜感激。

 pickImage.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {                
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("image/*");
                startActivityForResult(photoPickerIntent, SELECT_PHOTO);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

        switch(requestCode) { 
        case SELECT_PHOTO:
            if(resultCode == RESULT_OK){
                try {
                    final Uri imageUri = imageReturnedIntent.getData();
                    final InputStream imageStream = getContentResolver().openInputStream(imageUri);
                    final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
                    imageView.setImageBitmap(selectedImage);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

            }
        }
    }

2 个答案:

答案 0 :(得分:0)

你可以这样做:

  1. 制作全局变量

    SharedPreferences sp;
    
  2. 获取imageview参考后的onCreate()

    sp=getSharedPreferences("profilePicture",MODE_PRIVATE);
    
    if(!sp.getString("dp","").equals("")){
        byte[] decodedString = Base64.decode(sp.getString("dp", ""), Base64.DEFAULT);
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
        imageView.setImageBitmap(decodedByte);
    }
    
  3. 在onActivityResult方法中,在imageView中设置图像后,写下以下代码:

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
            byte[] b = baos.toByteArray();
            String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
            sp.edit().putString("dp", encodedImage).commit();
    
  4. 此代码应该有效。请试试。如果它不起作用,我可以给你完整的活动代码。

答案 1 :(得分:0)

你在做什么,你从图库中选择图像,使用它的位图将图像设置为imageview。当你退出活动时,附加到该活动的所有视图组件也会被破坏。 这里你必须要理解的一件事是,你没有保存位图或图像路径以便以后出现,通过查看你的逻辑,它清楚地表明保存和加载保存的图像都丢失了。

解决方案是,

从图库中选择图像后,将图像路径保存在共享首选项中。尝试从保存的路径加载图像,在将其位图加载到Imageview之前,请确保图像路径有效(在某种意义上,图像存在)。

我希望你能实现这一目标。