0

画像を選択してトリミングしました。しかし、後で表示できるように、トリミングされた画像 uri を共有設定に保存したいと考えています。共有設定で保存する方法はわかるのですが、問題のカギは「切り抜いた画像の画像URLをどうやって取得するか」

........................
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// code for crop image
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);
intent.putExtra("return-data", true);
startActivityForResult(Intent.createChooser(intent, getString(R.string.image_action)),
                Code);
........................

そして、onActivtyResult()私はそれを取得します:

if (resultCode == Activity.RESULT_OK) {
    if (requestCode == SELECT_IMAGE) {
              Bundle extras = data.getExtras();
          Bitmap photo = extras.getParcelable("data");
              imageView.setImageBitmap(bm); 
              // I want to save the cropped bitmap image's url into preference here
        } 
}

フォーマットでビットマップを優先的に保存することはできますが、Base64そのような巨大なデータを優先的に保存することはお勧めしません。後で画像を取得できるように、新しいトリミングされた画像の URL のみを保存するにはどうすればよいですか。

4

2 に答える 2

1

以前に提供したリンクに基づいてこれを書きました...

...
if (resultCode == Activity.RESULT_OK) {
    if (requestCode == SELECT_IMAGE) {
          Bundle extras = data.getExtras();
          Uri filePathFromActivity = (Uri) extras.get(Intent.EXTRA_STREAM);
          filePathFromActivity = Uri.parse(getRealPathFromUri( (Activity) CurrentActivity.this, filePathFromActivity));
          imagePath = filePathFromActivity.getPath();
          SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
          SharedPreferences.Editor editor = settings.edit();
          editor.putString("imagePath", imagePath);

          // Commit the edits!
          editor.commit();
    } 
}
...

public String getRealPathFromUri(Activity activity, Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = activity.managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
于 2013-05-24T20:23:01.850 に答える
0

保存するには:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("imageUrl", imageUrl);

// Commit the edits!
editor.commit();

それを取得するには:

 SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
 String imageUrl = settings.getString("imageUrl", null);

ドキュメントから: http://developer.android.com/guide/topics/data/data-storage.html#pref

于 2013-05-24T19:57:51.467 に答える