2010-09-15 5 views
0

У меня есть программа для интерфейса PND под управлением Windows CE (как 5.0, так и 6.0). Пользователь имеет большое количество изображений (в настоящее время в формате png) в качестве кнопок или для целей украшения. Изображения загружаются с SD-карты через new Bitmap(path);Как загрузить и управлять изображениями более эффективно?

В настоящее время я использую v3.5 рамки.

При загрузке ОС + мое приложение потребляет от 75 до 80% памяти устройства.

Wich хорошие способы, чтобы оптимизировать все эти файлы?

ответ

4

Единственными способами, которые приходят мне на ум, чтобы оптимизировать эти изображения, было бы изменить их размер до необходимого размера (например, большинство значков будут использоваться в размере 16x16), и если вы сохраните также как растровое изображение, то ваша карта вы также можете установить используемую цветовую палитру в размере, соответствующем конкретным потребностям данного изображения (например, изображение размером 16x16 имеет 256 пикселей. Таким образом, вам нужна максимальная палитра из 256 цветов, но, возможно, также самоопределяемая 16 цветовая палитра достаточно, причина в вашем изображении - только 16 разных цветов.)

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

Последний, который пришел мне на ум, относится к фоновым изображениям. Если у вас есть сплошной фон, вам не нужен его полный размер. Просто возьмите растровое изображение 1x1 и растяните его до нужного размера. То же самое относится к градиентным фонам, но в этом случае у вас есть растровое изображение 1x2, которое будет растянуто. И последнее, но не менее важное, если у вас есть правильный рисунок, просто возьмите из него самый маленький уникальный кирпич и используйте какой-то механизм плитки.

0

Если вы создаете ОС, можно ли сохранять изображения как часть ОС?

В случае, если это возможно, и изображение полностью загружено в ОЗУ, вы можете загружать изображения только при необходимости отображения базы и выгружать их, когда это не требуется. Это позволит избежать некоторого времени загрузки, так как доступ к ОЗУ происходит быстрее, чем доступ к SD-карте.

Другим трюком с той же концепцией было бы скопировать все изображения в FS на основе ОЗУ и загрузить их только на основе потребности - нижняя сторона заключается в том, что это нужно делать после каждой перезагрузки.

Смежные вопросы