Я делаю изображение галереи. Я получаю путь изображения в устройстве и разбираюсь с URI. Затем я использую Picasso Android Lib для загрузки изображения в Imageview
в Gridview
. Он отлично работает, пока не появится большое изображение. Пикассо не может загрузить большое изображение. Я получил ошибку Out Of Memory
. Есть ли предложение загрузить большое изображение в ImageView
? И есть ли lib для загрузки изображения в ImageView
может вместо Пикассо?Android: Загрузка большого изображения из хранилища в ImageView
ответ
Я нашел ImageLoader lib для моей проблемы. Он работает нормально. Я тестировал свой проект, а затем увидел, что ImageLoader выглядит лучше, чем Picasso.
Узнайте, как использовать общие методы для обработки и загрузки объектов Bitmap таким образом, чтобы поддерживать компоненты пользовательского интерфейса (UI) и избегать превышения предела памяти приложения. Если вы не будете осторожны, растровые изображения могут быстро потреблять ваш доступный бюджет памяти, приводящий к сбою приложения из-за страшного исключения: java.lang.OutofMemoryError: размер растрового изображения превышает бюджет VM.
Есть целый ряд причин, почему загрузки растровых изображений в вашем Android приложения сложно:
Мобильные устройства обычно сдерживают системные ресурсы. У устройств Android может быть всего 16 МБ памяти, доступной для одного приложения. Документ определения совместимости Android (CDD), раздел 3.7. Совместимость с виртуальной машиной дает требуемую минимальную память приложений для различных размеров экрана и плотности. Приложения должны быть оптимизированы для выполнения в рамках этого минимального предела памяти. Однако имейте в виду, что многие устройства настроены с более высокими ограничениями.
Растровые изображения занимают много памяти, особенно для богатых изображений, таких как фотографии. Например, камера на Galaxy Nexus принимает фотографии размером до 2592x1936 пикселей (5 мегапикселей). Если используется битмап-конфигурация ARGB_8888 (по умолчанию от Android 2.3), то загрузка этого изображения в память занимает около 19 МБ памяти (2592 * 1936 * 4 байта), что сразу же исчерпало ограничение для каждого приложения на некоторых устройствах. Пользовательский интерфейс приложения для Android часто требует сразу нескольких битмапов. Компоненты, такие как ListView, GridView и ViewPager, обычно включают в себя несколько растровых изображений на экране одновременно со многими более потенциально готовыми к показу при щелчке пальца.
Это декодирование растрового изображения, верно? Итак, есть ли lib для загрузки изображения в ImageView, а вместо Picasso? И как я могу решить эту проблему с Пикассо? –
Вот пример, который я когда-то, но он не совершенен! (К сожалению)
Вы можете уменьшить размер растрового изображения:
public Bitmap resizeBitmap(Bitmap bitmap) {
if (bitmap.getHeight() > 4096 || bitmap.getWidth() > 4096) {
int width = (int) (bitmap.getWidth() * 0.9);
int height = (int) (bitmap.getHeight() * 0.9);
Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
resizeBitmap(resizedBitmap);
returnresizedBitmap;
} else {
return bitmap;
}
}
Если я должен сделать это снова: (не тестировалось)
public Bitmap resizeBitmap(Bitmap bitmap) {
int originalWidth = bitmap.getWidth();
int originalHeight = bitmap.getHeight();
if (originalWidth > 4096 || originalHeight > 4096) {
int height;
int width;
if(originalHeight > originalWidth) {
height = 4096;
width = originalWidth/(originalHeight/4096);
} else {
width = 4096;
height = originalHeight/(originalWidth/4096);
}
Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, width, height, false);
return resizedBitmap;
} else {
return bitmap;
}
}
Вы можете пользовательских recent-images библиотека для вашей цели. Это очень простая и простая в использовании библиотека. Он создает миниатюру изображения для отображения в gridview, а затем щелчком открывается оригинал.
- 1. Загрузка изображения ImageView из другого в ImageView
- 2. Загрузка из изображения из XML в ImageView
- 3. Загрузка изображения в ImageView
- 4. Загрузка изображения в ImageView из OpenLibrary API
- 5. Android: Загрузка ImageView из URL
- 6. Загрузка изображения из MYSQL в Imageview
- 7. Медленная загрузка ImageView в ListView - Android
- 8. Загрузка изображения из google places url в imageview (Android)
- 9. Загрузка очень большого растрового изображения
- 10. Загрузка растрового изображения на ImageView android
- 11. Android - Загрузка изображения с сервера и загрузка в ImageView
- 12. Загрузка большого изображения
- 13. Drupal6: Загрузка большого изображения?
- 14. Android: Медленная производительность с использованием большого изображения в ImageView
- 15. Кэш четкого изображения Android из хранилища
- 16. android - загрузка изображения из Интернета и установка ImageView
- 17. Загрузка изображения другого изображения в anothe imageview
- 18. Загрузка Большого изображения Эффективно в Рециркуляторе
- 19. прокрутка большого изображения android
- 20. Android: Загрузка большого изображения из активов с помощью Webview
- 21. Android Загрузка изображения из URL в ListView
- 22. Как обрезать части большого изображения в ImageView
- 23. Загрузка изображений в ImageView в Android
- 24. Чтение файла изображения из внешнего хранилища и размещение в ImageView
- 25. ImageView hiccup при настройке большого изображения
- 26. Firebase Android Загрузить изображение в ImageView из хранилища
- 27. Загрузка изображения в android imageView с ионами возвращает размытый результат
- 28. Android - Загрузка изображения byte by byte в imageview
- 29. Обработка большого файла Загрузка изображения
- 30. Загрузка изображения Android в listview
Вы можете использовать библиотеку [this] (https://github.com/nostra13/Android-Universal-Image-Loader) –
Я попробую ImageLoader lib для вашего обращения. Итак, ImageLoader лучше, чем Пикассо? –
да его лучше, я тоже давно перешел на это с Пикассо. –