Форум программистов, компьютерный форум, киберфорум
Наши страницы
Nikto
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 1.

Как уменьшить память занимаемую графическими элементами

Запись от Nikto размещена 25.05.2016 в 13:57
Обновил(-а) Nikto 08.06.2017 в 10:41

Во время разработки игры, приложения или сайта очень часто возникает вопрос уменьшения занимаемой памяти. Обычно большую часть памяти могут занимать графические элементы.

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

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

Первый способ, который поможет уменьшить объём памяти, занимаемой картинками, это использование программы image catalyst. С помощью этой программы мне удалось сжать графику (я использовал png формат) для своей игры почти на 30% и на глаз такое сжатие не заметно. В этой программе есть два режима сжатия advanced и xtreme, я всегда использую xtreme.

Второй способ будет немного поинтересней. Заключается он в том, что однообразные картинки нужно положить на один холст и сохранить в виде одного изображения. Например, если изначально есть две картинки размерами 128x128, то на выходе мы должны получить одну 256x128, но содержащую в себе два изображения. Никогда не думал, что таким образом удастся сэкономить много памяти, но я ошибался. У меня были 5 картинок размером 128x128 и весили они в сумме 45кб, склеив я получил одну картинку 640x128 с пятью изображениями, но весом уже 17кб! Получается почти 40% экономии.

На первый взгляд может показаться, что такую графику в одном изображении потом будет не удобно использовать в игре, но битблиттинг всех спасёт. Внутри игры можно легко разделить эту графику по отдельным картинкам. На as3 это делается с помощью функции copyPixels, тем более отделять не обязательно, достаточно запомнить где какой кадр находится на изображении.

Ну а на сайтах использование таких спрайтовых методов ещё проще. Определением местоположения кадра в изображении занимается css. Это делается через свойство background-position. То есть сдвигая изображение можно использовать разные кадры на этом изображении.

Источник: https://catplusplus.ru/blog/how_reduce_memory_graphics_elements
Размещено в Без категории
Просмотров 472 Комментарии 2
Всего комментариев 2
Комментарии
  1. Старый комментарий
    Аватар для SatanaXIII
    А если шифровать изображения какими-нибудь уравнениями десятого порядка, то будут еще меньше весить. Но на приведение его в человеческий вид будет уходить куча времени ресурсов.
    Это бесконечное противостояние занимаемой памяти и времени работы программы.
    Запись от SatanaXIII размещена 27.05.2016 в 09:24 SatanaXIII вне форума
  2. Старый комментарий
    есть много программ по сжатию. я в 5 раз сайт сжимал. простые гиф/png в 4 раза,
    анимационные и похожие лучше ставить рядом вертикально - это будет непрерывный архив, если интересно пиши в личку дам ссылки. тут запрещено.
    скорость декомпрессии зависит от алгоритма. есть вполне быстрые.
    Запись от nekto123456789 размещена 01.06.2016 в 17:01 nekto123456789 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru