Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Как сэкономить память?


Автор: костярик 21.7.2006, 16:40
Добрый день!
У меня еще один вопрос smile. Известно, что класс TBitmap хранит в памяти не только цвета каждого пиксела, но и кучу всякого кода. Как мне сэкономить память и ограничиться только массивом цветов? Спасибо. 

Автор: Alexeis 21.7.2006, 19:52
Цитата(костярик @  21.7.2006,  16:40 Найти цитируемый пост)
но и кучу всякого кода. Как мне сэкономить память и ограничиться только массивом цветов? Спасибо. 

Ну кода там допустим нет, а служебной информации не так уж много. Если и в правду надо сэкономить память, пользуйтесь форматом png, он позволит уменьшить размер изображения в несколько раз, без потерь качества. Соответствующий компонент можно загрузить с torry.net. 

Автор: костярик 21.7.2006, 20:34
Цитата

Ну кода там допустим нет, а служебной информации не так уж много. 

Ну, не знаю что там у него храниться, но у меня при динамическом создании нового экземпляра класса TBitmap, занимаемая память увеличивается 12 кб (вместе в виртуальной). Размеры поля: 1 на 1 пиксел. Вот этого-то я и хочу избежать. Мне надо хранить только инфу о цвете -- 3 байта в вышеприведенном примере, а не 12 кб. Как мне это сделать? Я видел, есть какие-то HBitmap, BITMAPINFO... Что лучше использовать и, если можно вкратце, как?
А за png спасибо, интересно, как это он позволяет уменьшить размер, надо будет узнать... 

Автор: Alexeis 21.7.2006, 22:09
Для вывода на экран, можно использовать только bitmap, поскольку видеоадаптер работает именно с ним. Память выделяется в основном (12кб), на сам объект, а не на изображение. Если его грузить в память при помощи Аpi то этих расходов удастся избежать.
BITMAPINFO занимает не более 144байт(самый навороченный вариант)
BITMAPfileHeader байт 10
и палитра(только для изображений 256 цветов и хуже) 256 * 4 = 1кб

Если сильно хочется это сделать ручками или просто познакомится с его внутренней структурой, то читайте мою статью
http://forum.vingrad.ru/index.php?showtopic=94227&hl=%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82,and,bmp

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)