|
8 / 8 / 0
Регистрация: 29.07.2010
Сообщений: 47
|
|
Как создать большой bitmap и избежать переполнения памяти19.03.2011, 02:34. Показов 4293. Ответов 11
Метки нет (Все метки)
У меня такая проблема - нужно создать большой bitmap, размером так 15000x15000. Вызывает ошибку =) Из-за нагрузки на память, видимо, поскольку меньший размер прорисовывается нормально.
Можете посоветовать, как здесь можно поступить? Спасибо.
0
|
|
| 19.03.2011, 02:34 | |
|
Ответы с готовыми решениями:
11
Как избежать переполнения при работе с большими числами Избежать переполнения float
|
|
19 / 19 / 4
Регистрация: 04.07.2010
Сообщений: 86
|
|
| 19.03.2011, 08:26 | |
|
Когда я работал с Delphi у меня была подобная ошибка, только размер был меньше гораздо, около 1024х768. Я решил проблему просто, вместо 1 элемента использовал 2 по 512х768. И все заработало. Попробуйте может так. А если не секрет, зачем Вам 15000x15000?
1
|
|
|
60 / 60 / 6
Регистрация: 07.09.2010
Сообщений: 259
|
|
| 19.03.2011, 08:30 | |
|
Lottarend, возможно использовать DirectX библиотеки. Сам не знаю - предполагаю ))
0
|
|
|
|
|
| 19.03.2011, 08:36 | |
|
Lottarend, математика простая: 15000x15000х4=900 000 000 Байт. ~900МБ ОЗУ сжирает только твоя картинка, если учесть, что прога жрет и другие ресурсы.... Короче ставь в комп 16ГБ ОЗУ и все будет нормально.
![]() А вот действительно, зачем тебе картинка на 225 мегапикселей весом почти 1 ГБ?
2
|
|
|
8 / 8 / 0
Регистрация: 29.07.2010
Сообщений: 47
|
|
| 19.03.2011, 14:11 [ТС] | |
|
Да просто делаю прорисовку карты, с разным уровнем детализации. Масштаб нужен покрупнее =)
А разбивать карту на отдельные картинки... Как-то сложно. Все данные ведь сначала из текстовика берутся, потом по ним делается прорисовка. Даже и понять не могу, как туда все это зафигачить. Ладно, буду думать.
0
|
|
|
I ♥ C#
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
|
| 19.03.2011, 15:53 | |
|
Карты надо рисовать в векторе.
0
|
|
|
2 / 2 / 0
Регистрация: 05.01.2011
Сообщений: 16
|
|
| 19.01.2012, 13:29 | |
|
0
|
|
|
8 / 8 / 0
Регистрация: 29.07.2010
Сообщений: 47
|
|
| 20.01.2012, 03:16 [ТС] | |
|
Теме сто лет уже, я тогда вообще только начинал =)
0
|
|
|
80 / 78 / 10
Регистрация: 29.12.2011
Сообщений: 183
|
||
| 21.01.2012, 13:29 | ||
|
0
|
||
|
8 / 8 / 0
Регистрация: 29.07.2010
Сообщений: 47
|
|
| 24.01.2012, 12:30 [ТС] | |
|
Да, я знаю, там действительно ничего сложного нет, особенно в разбиении обычных картинок. У битмапа, по моему, есть метод, который позволяет взять кусок в пикселях, и сохранить его куда-нибудь. Это что касается нарезки.
Когда происходит сохранение на файл, я их сохранял таким образом. Допустим, имя файла: R1C1, что значит, строка 1, столбец 1. Т.е., как бы, виртуально представляется такая мозаика. При определении координат карты нужны некие статические оси х и y, к которым будут прибавляться координаты сдвига (т.е., пошевелил пользователь мышью вправо, прибавил к переменной столько то пикселей). Координату по х делим на размер одного квадрата, получаем номер столбца, по y - номер строки. Дробная часть отвечает за смещение внутри зоны. Если это растровые картинки, то здесь лучше подгружать их маленькими кусочками, например, 256x256, в некоторой области вокруг текущего квадрата местоположения, чтобы ускорить загрузку. Для вектора смысла нету в большом количестве маленьких зон, нужны максимально большие зоны, на которых перемещение и масштабирование не тормозит, т.к. векторная графика обычно представлена в текстовом формате, который хорошо сжимается, и весит совсем немножко. Ну, это если кому-то эта тема покажется нужной, то я набросал, как я делал это.
1
|
|
|
28 / 19 / 16
Регистрация: 09.12.2009
Сообщений: 135
|
|||||||||||
| 07.04.2015, 23:09 | |||||||||||
|
И все равно не совсем понятно.
То есть получается, что по размеру, занимаемому в памяти, одна картинка 16000х16000 != 64*2000*2000? Моя проблема в том, что при использовании Bitmap'а размером 704х704 приложение занимает в оперативной памяти ~2Gb, при 512х512 -- ~1Gb, при 256х256 -- ~300Mb. При больших значениях оно даже не запускается, т.е. 495616 пикселей -- предел? У меня 4Gb оперативки в общем. Немного о приложении: простой тайловый редактор карт, создается для изучения языка, а также для развлечения и последующего написания простой игрули. Написан он, правда, на PascalABC.Net, а не на C#. Но это, как мне кажется, не столь важно. Я создаю PictureBox, создаю два Bitmap (один большой -- поле, один маленький -- кисть), создаю Graphics. При клике на PictureBox (событие MouseClick) хватаю координаты мыши и в это место сую тайл примерно так: до процедуры обработки создаю сам bitmap, на котором отображаю карту
0
|
|||||||||||
|
|
|||
| 07.04.2015, 23:51 | |||
|
1
|
|||
| 07.04.2015, 23:51 | |
|
Помогаю со студенческими работами здесь
12
Как избавиться от переполнения памяти при очистке большого html файла? Утечка памяти в программе , как избежать или как правильно уничтожить объект? Как избежать утечки памяти: нюансы использования QList Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|