-4

我有一个要存储在共享首选项中的图像路径。

  1. 如何将路径存储在共享首选项中?
  2. 如何从共享首选项中检索图像路径?
4

3 回答 3

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

但是,我必须告诉你,Base64 支持只是最近才包含在 API8 中。要针对较低的 API 版本,您需要先添加它。幸运的是,这个人已经有了所需的教程。

另外我必须告诉你,这是一个复杂的过程,shareprefrence 仅用于存储少量数据,例如用户名和密码,你也可以使用这种方法:

将图像路径(来自 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);

}
于 2012-05-30T10:50:22.153 回答
0

将路径存储为字符串

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putString("your_preference", your_path.toString());
e.commit();

这也被问过很多次,因此 -1

于 2012-05-30T10:38:56.263 回答
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);
        }
于 2012-05-30T10:41:34.177 回答