Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   формат bitmap (http://www.flasher.ru/forum/showthread.php?t=133301)

cactusov 02.12.2009 00:34

формат bitmap
 
Можно ли как-то регулировать цветность bitmap'а, скажем, сделать его в градациях серого или вообще черно-белым с целью экономии памяти?

flash33 02.12.2009 00:37

BitmapData.colorTransform
А память вы этим не съэкономите

cactusov 02.12.2009 00:43

с colorTransform я знаком, интересна идея хранения битмапы с ограниченной палитрой

flash33 02.12.2009 00:47

paletteMap (), но это операция над полноцветным растром, следовательно память не экономится. Только разве вы ее потом сохраните на диске в сжатом jpg...

cactusov 02.12.2009 01:01

идея изменения палитры не в цвете, а в экономии памяти. мне вообще все-равно какие там будут цвета, нужно всего два разных цвета - черный и белый. У меня битмапы выступают в качестве слоя erase. таких bitmap 200 штук 400х400 пикселей, кушают они около 400 метров оперативки, что не есть гуд.
другого решение, без использования такого количества битмапов, я не нашел

iNils 02.12.2009 01:29

Цитата:

таких bitmap 200 штук 400х400 пикселей, кушают они около 400 метров оперативки,
Все битмапдаты хранятся в памяти, как 32-х битные.

wvxvw 02.12.2009 01:38

Можно попробовать хранить как Vector.<Boolean> но рассчеты будут очень ресурсоемкими... возможно с помощью Алхимии можно что-то с этим придумать, но я не специалист.
Код AS3:

var v:Vector.<Boolean> = new Vector.<Boolean>(400 * 400, true);
var i:int = 400 * 400;
while (i--) v[i] = Math.random() > .5;
var b:BitmapData = new BitmapData(400, 400);
var ba:ByteArray = new ByteArray();
ba.writeObject(v);
trace(getSize(ba), getSize(b)); //80 640064

EDIT: Оп, чет я с подсчетами погарячился... вектор по ходу еще и не сериализуется... :(

cactusov 02.12.2009 10:27

всем большое спасибо, видимо не судьба. жаль. с вектором, на первый взгляд, хорошая идея, но думаю, что после расчетов оперативка все-равно будет съедаться...

Партизан 02.12.2009 11:41

А векторными изображениями хранить? А потом отрисовывать в битмапы? Не думаю что вам все сразу картинки нужны. Это если конечно изображения не сложные.
Недавно просто пришлось делать карту, несколько уровней зума(15). Растра там было бы очень много. Важна была так же и детализация. Просто вектор закинув - то же не решение... Вывод не имел права на жизнь. Очень все тормозило. Решил проблему красиво - отрисовывал вектор "налету" по 9 экранов. Смысл в том что при каждом перемещении по карте пользователь не может сместить ее более чем на один экран в любом направлении. При условии что размер флешки фиксированный, результат получился довольно терпимым. Вес вектора 1 мегабайт + 9Битмапов. Возможно в вашем случае можно решить задачу примерно так же.

enepx 02.12.2009 14:34

Цитата:

Сообщение от iNils (Сообщение 869637)
QUOTE]Все битмапдаты хранятся в памяти, как 32-х битные.

Вот я не понимаю почему, у меня тоже много битмапы, сами они JPG и весят немного, а флеш все выедает. Есть ли другие способы хранения прямо в JPG формате, например?

Jewelz 02.12.2009 14:56

а если в byteArray хранить jpg, только конвертировать наверно долго..

enepx 02.12.2009 16:10

Цитата:

Сообщение от Jewelz (Сообщение 869731)
а если в byteArray хранить jpg, только конвертировать наверно долго..

почему Адоба не может реализовать стандартное хранение/отображение сжатых форматов? Зачем конвертить в гигантскую битмапу?

wvxvw 02.12.2009 16:23

Вопрос не понятен :) Так не храните в битмапдате - храните в нужном вам формате и используйте битмапдату только тогда, когда она вам действительно нужна...

cactusov 02.12.2009 20:04

в том-то все и дело, что они отображаются все сразу, что-то вроде пирога из 100 слоев :( и обновляются они каждые 50мс.
на счет хранения - если битмапы будут сжиматься - то уйдет очень много времени на их расжатие. в 3д движках можно ограничивать формат текстур, во флеше видимо нельзя :(
всем, огромное спасибо за поддержку :)

enepx 02.12.2009 21:22

Цитата:

Сообщение от cactusov (Сообщение 869841)
в том-то все и дело, что они отображаются все сразу, что-то вроде пирога из 100 слоев :( и обновляются они каждые 50мс.

у меня та же фигня, раскадровка анимации.

Psycho Tiger 04.12.2009 18:35

Цитата:

Сообщение от cactusov (Сообщение 869841)
в том-то все и дело, что они отображаются все сразу, что-то вроде пирога из 100 слоев :( и обновляются они каждые 50мс.
на счет хранения - если битмапы будут сжиматься - то уйдет очень много времени на их расжатие. в 3д движках можно ограничивать формат текстур, во флеше видимо нельзя :(
всем, огромное спасибо за поддержку :)

Попробуй одну большую битмапу с copyPixel`s, быть может даже без отрисовки невидимых граней.

SamFR 04.12.2009 23:02

Цитата:

Сообщение от cactusov (Сообщение 869841)
почему Адоба не может реализовать стандартное хранение/отображение сжатых форматов? Зачем конвертить в гигантскую битмапу?

По вопросам производительности. Как, впрочем, и другие библиотеки, в том числе компилируемые в машинный код.


Часовой пояс GMT +4, время: 10:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.