Android Как сохранить изображение под своим уникальным именем изображения? - PullRequest
0 голосов
/ 07 февраля 2011

Звучит так, как будто бы у новичка, подобного мне, только ... это мой код ...

    private void saveAvatar(Bitmap avatar) {
    String strAvatarFilename =  Id + ".jpg"; 
    try {
        avatar.compress(CompressFormat.JPEG, 100, openFileOutput(strAvatarFilename, MODE_PRIVATE));
    } catch (Exception e) {
        Log.e(DEBUG_TAG, "Avatar compression and save failed.", e);
    }
    Uri imageUriToSaveCameraImageTo = Uri.fromFile(new File(PhotoActivity.this.getFilesDir(), strAvatarFilename));
    Editor editor = Preferences.edit();
    editor.putString(PREFERENCES_AVATAR, imageUriToSaveCameraImageTo.getPath());
    editor.commit();
    ImageButton avatarButton = (ImageButton) findViewById(R.id.ImageButton_Avatar);
    String strAvatarUri = Preferences.getString(PREFERENCES_AVATAR, "");
    Uri imageUri = Uri.parse(strAvatarUri);
    avatarButton.setImageURI(null); 
    avatarButton.setImageURI(imageUri);
}

Это сохраняет изображение, но когда я иду посмотреть на изображение наSD-карта ti называется imag001 и т. д., а не ID, который я ее обозначаю.Как сохранить изображение с именем, которое я хочу назвать?С уважением

РЕДАКТИРОВАТЬ

Я обнаружил кое-что интересное ... Я считаю, что на SD-карте в DCIM / 100MEDIA изображение, снятое приложением, сохраняется с использованием именителефон установлен по умолчанию.Однако в data / data / com.andorid.packagename / files / изображение также может храниться с именем, которое я ему даю.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Кажется, вы устанавливаете имя файла со второй строкой кода:

String strAvatarFilename =  Id + ".jpg";

Я не знаю, откуда идет идентификатор, вы не включили достаточный контекстэто, но кажется разумным, что он содержит «imag001».Чтобы назвать ваше изображение как-нибудь еще, вам нужен другой способ установить это значение.Это может выглядеть сотнями разных способов.

1 голос
/ 07 февраля 2011

Код, который вы разместили, выглядит хорошо, за исключением одной вещи.Первая строка функции.Вы никогда не передаете какой-либо идентификатор этой функции, поэтому она использует глобальную переменную класса (я так думаю).

Чтобы решить вашу проблему, вы должны изменить свою функцию на что-то подобное:

private void saveAvatar(String id, Bitmap avatar) {
    String strAvatarFilename =  id + ".jpg";
    ...
}

Таким образом, вы всегда знаете, откуда именно этот идентификатор.В вашем текущем коде неясно, где вы взяли этот Id и был ли он где-либо изменен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...