Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
#1

OutOfMemory при создании большого Bitmap - Android

04.05.2013, 22:46. Просмотров 974. Ответов 9
Метки нет (Все метки)

Всем привет! Пытаюсь создать Bitmap размером 5120 * 2600 точек, на что отладчик ругается, что мол нет памяти. Неужели это непосильная для устройства задача? Отладка идет на SGS III. Реально ли с этим бороться?

Добавлено через 27 минут
Разузнал, что можно создавать Bitmap только размером до 4096*4096. Неужели нельзя больше? Хотелось хотя-бы 50000 * 3000... =)) Или я уже совсем перегибаю? =)))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 22:57     OutOfMemory при создании большого Bitmap #2
попробуйте добавить в манифест в <application> android:largeHeap="true"
Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
04.05.2013, 23:03     OutOfMemory при создании большого Bitmap #3
Цитата Сообщение от V0v1k Посмотреть сообщение
попробуйте добавить в манифест в <application> android:largeHeap="true"
Работает на устройствах с Android 3.x и выше. Увеличиввает Heap до 256 MB. Для SGS III подойдет!
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
04.05.2013, 23:06  [ТС]     OutOfMemory при создании большого Bitmap #4
Цитата Сообщение от V0v1k Посмотреть сообщение
попробуйте добавить в манифест в <application> android:largeHeap="true"
попробовал, Bitmap увеличился, но рисование на канвасе стало глючить, и в итоге прога вылетела. Вообще, я так понял, что рисовать на канвасе, используя битмап, очень ресурсоемкое дело. Есть ли возможность отрисовать большую сцену, не используя битмапа?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 23:12     OutOfMemory при создании большого Bitmap #5
если нужно нарисовать внешнюю картинку то без битмапа не обойтись.

Добавлено через 1 минуту
а зачем вам такая большая картинка?
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
04.05.2013, 23:12  [ТС]     OutOfMemory при создании большого Bitmap #6
Цитата Сообщение от V0v1k Посмотреть сообщение
если нужно нарисовать внешнюю картинку то без битмапа не обойтись.
неа, внешняя картинка не нужна. все рисуется программно. есть способ?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.05.2013, 23:14     OutOfMemory при создании большого Bitmap #7
Цитата Сообщение от razer89 Посмотреть сообщение
неа, внешняя картинка не нужна. все рисуется программно. есть способ?
тогда просто рисуете на канвасе.
Java
1
2
canvas.drawLines();
canvas.drawRect();
и т.п.
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
05.05.2013, 01:06  [ТС]     OutOfMemory при создании большого Bitmap #8
вы знаете, пробовал так, но что-то ничего оно не отрисовывает...

Добавлено через 29 минут
появилась идея не рисовать сразу весь канвас, а отрисовывать только ту его часть, которая видна на экране... тогда не придется использовать битмап мега размеров) единственный минус - придется перелопатить ОХ КАК НЕМАЛО кода... эх, знал бы я это раньше....

Добавлено через 1 час 13 минут
V0v1k, помогите пожалуйста додумать...
В общем, у меня есть канвас, который рисует на битмапе. Битмап у меня размером такой же, как и экран. Если рисовать на канвасе, то все замечательно, но когда отрисовка выходит за область бимапа - не рисуется ничего. Возможно ли сделать так, чтобы при скроле канваса двигался и сам битмап? Тогда его размеры можно не увеличивать, просто будет видно то, что рисуется в области битмапа...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.05.2013, 02:00     OutOfMemory при создании большого Bitmap #9
я всегда рисовал просто на канвасе.

Добавлено через 2 минуты
не совсем понятна суть проблемы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 01:24     OutOfMemory при создании большого Bitmap
Еще ссылки по теме:

Вылетает при создании потока Android
Android При загрузке большого количества картинок библиотекой Picasso заканчивается память
Android Чек большого количества togglebutton при прогрессе seekBar тормозит
Android Ошибка при создании обработчика
Android Ошибка OutOfMemory в Service

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
06.05.2013, 01:24  [ТС]     OutOfMemory при создании большого Bitmap #10
V0v1k, дело в том, что мне нужно чтобы канвас с отрисованной на нем графикой скроллился. Канвас достаточно большой, соответственно большим и получается битмап, на котором рисует канвас. На канвасе у меня рисуются точки, соединенные линиями. Координаты точек лежат в массиве. Сейчас попробовал сделать так, чтобы канвас не скроллился, а просто перерисовывались точки с учетом скролла (то есть от координат точек я просто отнимаю значения скролла). Но это тоже достаточно ресурсоемко, так как при каждом скролле весь канвас перерисовывается. Есть какие-нибудь идеи? Я уже даже готов отказаться от этого гребаного канваса...

Добавлено через 4 часа 54 минуты
Блин, сорри за поднятую панику)) Оказалось, это просто я туплю) Оказывается, можно рисовать на канвасе без какого либо битмапа...)) Но все равно всем спасибо за внимание!
Yandex
Объявления
06.05.2013, 01:24     OutOfMemory при создании большого Bitmap
Ответ Создать тему
Опции темы

Текущее время: 08:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru