使用 SharedPreferences 将图像保存为字符串

Save image as string with SharedPreferences

我正在编写一个应用程序,我必须在其中保存 Activity 的状态。 我在屏幕上有一个 ImageView 和一个 Button。当我点击 ButtonImageView 更改背景图像。我的问题是当我停止 Activity 并再次启动它时 ImageView 显示第一张图片。我使用 Base64 将图像转换为 String。然后我用 SharedPreferences 保存了字符串。之后我得到它并用 Base64 再次解码。我没有任何错误消息,但它不工作。我复制我的代码,如果有人知道如何做请回复!

public static final String IMAGE = "Image";
public static final String DB_INIT = "DB_INIT";

Button button;
ImageView imageview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SharedPreferences sp = getApplicationContext().getSharedPreferences(
            DB_INIT, MODE_PRIVATE);
    String backimage = sp.getString(IMAGE, "res/drawable/my_image.png");

    button = (Button) findViewById(R.id.button1);
    imageview = (ImageView) findViewById(R.id.imageview);

    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            imageview.setBackgroundResource(R.drawable.szaz);
        }
    });
}
@Override
protected void onStop() {
    SharedPreferences sp = getApplicationContext().getSharedPreferences(
            DB_INIT, MODE_PRIVATE);
    SharedPreferences.Editor et = sp.edit();
    et.putString(IMAGE,"res/drawable/my_image.png");
    et.commit();
    super.onStop();
  }
}

您需要将图像 url 以 base64 格式传递,然后您可以将其存储到字符串中,之后您可以看到这个。

只需尝试实现上述代码,希望它对您有用。

Bitmap realImage = BitmapFactory.decodeStream(stream);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);   
    byte[] b = baos.toByteArray(); 

    String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
    textEncode.setText(encodedImage);

    SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
    Editor edit=shre.edit();
    edit.putString("image_data",encodedImage);
    edit.commit();

如有任何帮助,请告诉我。