2016-07-18 7 views
0

Я работаю над приложением, где мне нужно загружать изображения из Интернета и отображать их внутри приложения. Я использую Universal Image Loader до сих пор, но в последнее время я столкнулся с проблемой, когда приложение не отображает изображения, которые огромны по размеру, например, 700 x 7661, я прочитал несколько сообщений & ответов, связанных с ним, но ничто не кажется надежным решением, оно появляется в аппаратном ускоренном приложении. размер изображения ограничен пределом размера текстуры OpenGL, ответы здесь на Stackoverflow позволяют изменить размер изображения до меньшего размера. Я знаю, что отключение аппаратного ускорения исправляет его, но это не вариант, потому что это делает все приложение неустойчивым.Растровое изображение слишком большое, чтобы быть загруженным в текстуру (4096 x 4096)

Вопрос: как мы можем достичь этого точно, потому что устройства имеют разные ограничения на текстуру OpenGL, некоторые устройства поддерживают 2048 x 2048 и поддерживают 4096 x 4096, некоторые из них поддерживают даже меньшие размеры, если мы изменим размер изображения, рассмотрев самый маленький размер изображения будет размытым на устройствах с высоким разрешением, поэтому я как бы не понимаю, как подойти к этой проблеме, я попытался использовать Picasso, Fresco & Glide и все они имеют схожие проблемы.

Образец изображения я пытаюсь загрузить это http://i.imgur.com/ADpTC2W.jpg?1

С уважением

+0

установить программный слой ('View # setLayerType (интермедиат layerType, Paint краска)') только для представления, использующего ваше растровое изображение, а не для всего приложения – pskink

+0

@pskink, это будет эффективная память? – TilalHusain

+0

попробуйте разные типы (LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE) и посмотрите, как это влияет на ваше приложение. – pskink

ответ

0

Вы можете посмотреть максимальный размер текстуры с помощью Canvas.getMaximumBitmapWidth() и Canvas.getMaximumBitmapHeight(), а затем изменить их, прежде чем положить их в imageViews.

+0

Я сделал это, я выполнил ответ от Ромена Гая (http://stackoverflow.com/a/7523221/595603), но он возвращает недопустимое значение 32788 – TilalHusain

+0

Это может быть длинный снимок, но из того, что Ive нашел, деля его на 8, возвращает правильное значение, то есть это число представляет количество доступных байтов –

0

Вы можете прочитать разрешение устройства и изменить размер изображений для вашего разрешения

для получения разрешения увидеть это: How to get screen resolution

 Смежные вопросы

  • Нет связанных вопросов^_^