2015-06-18 4 views
2
java.lang.OutOfMemoryError: Failed to allocate a 313194252 byte allocation with 11901284 free bytes and 174MB until OOM 

Я получил это на этой линии:JPEG файла, кажется, большой: OutOfMemoryError

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.handskizze); 

Моя картинка имеет размер 2480*3508 в 300dpi. Является ли это может быть, большой? Как я могу сделать это меньше?

+0

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

ответ

2

Всякий раз, когда требуется загрузить любое изображение, всегда пытайтесь использовать любую библиотеку ImageLoader.

Имеется множество вариантов.

Вот некоторые из лучших библиотек, которые используют разработчики. Попробуйте любой из них, который вы заполняете, легко реализуется.

Вы можете найти еще несколько библиотек, но я чувствую, что эти 3 используются наиболее.

+0

Спасибо за ваш ответ !!! Я выберу один из них :) –

+0

Я рад помочь вам :) – dhuma1981

+0

@ dhuma1981 Можете ли вы объяснить, почему библиотека ImageLoader предпочтительнее «прямой» загрузки изображения? – TDG

0

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

android:largeHeap="true" 

использовать также

BitmapFactory.Options o=new BitmapFactory.Options(); 
o.inSampleSize = 2; //change value from 0 to 8 as per need and image resolution 
myBitMap=BitmapFactory.decodeResource(getResources(),R.drawable.handskizze, o); 
0

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

Кроме того, я бы посоветовал вам использовать библиотеку загрузчика изображений. Я использую Universal Image Loader в большинстве своих проектов. Он получает измерение ImageView, в которое вы хотите загрузить изображение, и уменьшает масштаб изображения, чтобы уменьшить его размер. Вы должны попробовать;)