Преобразование строки в 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?
Это третий ответ вниз.
У кого-нибудь есть идеи? Извините за супер длинный пост, но я скорее объясню свою проблему, чем не предоставлю достаточно информации. Извините, если на это ответили где-то еще. Я часами выискивал другие вопросы и просто не нашел ничего, что решило бы мою проблему.
Благодарю.