-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 に答える