Android эффективное хранение двух изображений, которые похожи - PullRequest
3 голосов
/ 24 сентября 2011

Размер приложения на телефоне должен быть как можно меньше.Если у меня есть изображение меча, а затем очень похожее изображение того же самого меча, за исключением того, что я изменил цвет или добавил пламя или изменил изображение драгоценного камня или чего-либо еще, как хранить вещи максимально эффективно?*

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

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

Есть предложения?Есть ли инструменты, которые я мог бы использовать, чтобы взять два PNG и создать файл различий или формат файла для хранения похожих изображений или что-то?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2011

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

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

Если сходство действительно очень сильное, вы даже можете попробовать Range Coder, чтобы добиться производительности менее одного бита на пиксель.Разница, однако, может быть заметна только для больших изображений (т. Е. С более высоким разрешением, чем спрайт 12x12).

Однако эти идеи потребуют от вас или кого-то другого написания для вас кода такой функции.Это должно быть довольно просто.

0 голосов
/ 25 сентября 2011

Очень простой способ сделать это - использовать ImagePack (одно изображение, содержащее много), чтобы вы могли легко использовать алгоритмы сжатия PNG или JPG для своих целей. Затем вы разделяете изображения перед рисованием.

0 голосов
/ 24 сентября 2011

Я бы решил эту проблему на более высоком уровне.Например, измените цвет во время выполнения (возможно, сохраните изображение с очень специфическим цветом, таким как некрасивый оттенок зеленого, который, как вы знаете, является цветом, который должен быть исправлен во время выполнения, с белым, красным или синим или любым другим фактическим цветом).ты хочешь).Затем вы можете сгенерировать несколько буферов изображений во время загрузки.

Для компоновки двух изображений просто сохраните изображение «драгоценный камень» отдельно и нарисуйте его поверх основного меча.Опять же, вы можете создать новый образ во время загрузки или просто выполнить перерисовку во время выполнения.

Это поможет уменьшить нагрузку на ваше приложение на флэш-памяти, но не уменьшит объем памяти, когда приложениеактивный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...