Android 图像未保存在配置文件图片中

Android 图像未保存在配置文件图片中,android,Android,这是使用的链接。。。问题是图像未保存。当我选择图片时,它将出现在ImageView中。但当我从此活动以及应用程序中退出时,它未保存…请帮助我 任何帮助都将不胜感激 pickImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Intent photoPi

这是使用的链接。。。问题是图像未保存。当我选择图片时,它将出现在ImageView中。但当我从此活动以及应用程序中退出时,它未保存…请帮助我

任何帮助都将不胜感激

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

            }
        }
    }
您可以这样做:

  • 生成全局变量

    SharedPreferences sp;
    
  • 获取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);
    }
    
  • 在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();
    

  • 这个代码应该可以工作。请试一试。如果它不起作用,我可以给你完整的活动代码。

    你要做的是,从gallery中拾取图像,并使用位图将图像设置为imageview。当您退出活动时,附加到该活动的所有视图组件也将被销毁。 这里您必须了解的一件事是,您没有保存位图或图像路径以供以后显示,通过查看您的逻辑,可以清楚地表明保存和加载保存的图像丢失了

    解决办法是

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


    我希望你能做到这一点

    您需要SharedReference来保存图像,这样当您再次恢复应用程序/活动时,它会显示图像。您可以发送该代码吗..它可以保存我的图像。我不太了解。请发送完整的活动代码..这样我就可以适当地改进我的代码如果它正常工作,那么您不需要完整的代码,你的代码比我的代码更好、效率更高:):)所有最好的东西当我从厨房选择图像时,自拍图像是水平的。例如,我拍了我的自拍。当我选择它作为个人资料照片时…我的脸是水平的。所以你能帮我在选择时裁剪或其他东西,这样它的外观会更好吗better@Manish我从未使用过裁剪功能。。但网上也有教程。。我找到的一个是。。如果你对我的担忧感到满意的话,我可以请你投票吗?当我给你评分时,它会显示你有15个repu,它会公开显示