我有一个想要存储在共享首选项中的图像路径。
答案 0 :(得分:4)
您所要做的就是将图像转换为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();
然后,在检索时,将其转换回位图:
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
String previouslyEncodedImage = shre.getString("image_data", "");
if( !previouslyEncodedImage.equalsIgnoreCase("") ){
byte[] b = Base64.decode(previouslyEncodedImage, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
imageConvertResult.setImageBitmap(bitmap);
}
但是,我必须告诉您,最近只在API8中包含了Base64支持。要以较低的API版本为目标,您需要先添加它。幸运的是,this已经有了所需的教程。
此外,我必须告诉您,这是一个复杂的过程,并且共享仅用于存储少量数据,例如用户名和密码,您也可以使用这种方法:
将图片路径(从sdcard)存储到像这样的共享偏好设置 -
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit=shre.edit();
edit.putString("imagepath","/sdcard/imh.jpeg");
edit.commit();
要加载图片路径,您可以使用此
final SharedPreferences sharedPreference = getSharedPreferences(
"pref_key", MODE_PRIVATE);
if (sharedPreference.contains("imagepath")) {
String mFilePath = sharedPreference.getString(imagepath,
null);
}
获得路径后,您可以使用:
File imgFile = new File(mFilePath);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);
}
答案 1 :(得分:0)
将路径存储为字符串。
Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putString("your_preference", your_path.toString());
e.commit();
这也是很久以前的问题,因此-1
答案 2 :(得分:0)
final SharedPreferences sPreference = getSharedPreferences(
"pref_key", MODE_PRIVATE);
final Editor spEditor = sPreference.edit();
spEditor.putString("img_path", mFileName);
spEditor.commit();
上面的代码可用于将图像路径保存到共享的首选项中。 现在要检索图像路径,请使用以下:
final SharedPreferences sharedPreference = getSharedPreferences(
"pref_key", MODE_PRIVATE);
if (sharedPreference.contains("img_path")) {
mFileName = sharedPreference.getString(img_path,
null);
}