使用 SharedPreferences 将图像保存为字符串
Save image as string with SharedPreferences
我正在编写一个应用程序,我必须在其中保存 Activity
的状态。
我在屏幕上有一个 ImageView
和一个 Button
。当我点击 Button
时 ImageView
更改背景图像。我的问题是当我停止 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();
如有任何帮助,请告诉我。
我正在编写一个应用程序,我必须在其中保存 Activity
的状态。
我在屏幕上有一个 ImageView
和一个 Button
。当我点击 Button
时 ImageView
更改背景图像。我的问题是当我停止 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();
如有任何帮助,请告诉我。