Преобразование строки в URI в растровое изображение для отображения в ImageView

Я искал решение моей проблемы во всем и, похоже, просто не могу его найти. Я уверен, что это, вероятно, 1 или 2 простые линии, и, надеюсь, кто-то может направить меня в правильном направлении.

В моем приложении пользователь может нажать кнопку, которая откроет галерею. Как только они выберут изображение, оно будет отображаться в ImageView в моем приложении. Эта часть работает отлично. Первоначально я только что вернул URI из галереи, и я бы прямо отобразил это с этим:

imageView1.setImageURI(myUri);

Ну, очевидно, я сейчас сталкиваюсь с ужасным "Out Of Memory" ошибка, если пользователь перезагружает эту страницу несколько раз подряд, поэтому мне приходится очищать код, чтобы уменьшить изображение. Я сделал это, реализовав растровый класс, который превращает изображение в растровое изображение и масштабирует его для меня. Теперь мой код отображения ImageView выглядит так:

imageView1.setImageBitmap(bitmap1);

Эта часть тоже работает нормально. ЗДЕСЬ ПРОБЛЕМА:

Я преобразую путь URI в строку, а затем сохранить его в SharedPreference. Это делается для того, чтобы, когда пользователь выходит из приложения, а затем возвращается позже, автоматически отображается изображение, которое он установил. Я конвертирую URI, как это:

...
selectedImageUri = data.getData();
String selectedImagePath;
selectedImagePath = getPath(selectedImageUri);
...

Старый метод для извлечения SharedPreference String, преобразования его в uri, а затем отображения, что он работает нормально. (за исключением ошибки Out Of Memory, конечно) Это выглядело так:

Uri myUri = Uri.parse(selectedImagePath);
imageView1 = setImageURI(myUri);

& Quot; selectedImagePath & Quot; очевидно, это строка, которую я получил из SharedPreference. Опять же, это работает нормально, но выдает ошибку, если перезагружается слишком много раз.

Часть, которая НЕ РАБОТАЕТ сейчас, - это когда я пытаюсь реализовать новое преобразование растрового изображения, чтобы я мог масштабировать растровое изображение и не получить ошибку памяти. Вот код для этого:

Uri myUri = Uri.parse(selectedImagePath)
Bitmap bitmap = getThumbnail(myUri);
imageView1.setImageBitmap(bitmap);

Это ничего не отображает. При выборе исходного изображения оно отображается нормально, но когда я возвращаюсь на этот экран и пытаюсь проанализировать строку из SharedPreference, а затем преобразовать ее в растровое изображение, ничего не отображается. Код для & quot; getThumbnail & quot; метод был взят прямо из ЭТОГО ПОЧТЫ --- & gt;

Как получить растровое изображение от Uri?

Это третий ответ вниз.

У кого-нибудь есть идеи? Извините за супер длинный пост, но я скорее объясню свою проблему, чем не предоставлю достаточно информации. Извините, если на это ответили где-то еще. Я часами выискивал другие вопросы и просто не нашел ничего, что решило бы мою проблему.

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос