Стандартный способ загрузки изображения в приложение J2ME использует метод Image.createImage, а рекомендованный формат изображения - PNG.Проблемы с загрузкой изображений в приложениях J2ME на телефонах Motorola
Теперь спецификации J2ME не устанавливают никаких ограничений на реализацию этого метода или представление изображения в памяти, поэтому каждый поставщик имеет другую реализацию.
Motorola, в частности, имеет эту действительно дрянную реализацию, где в PNG полностью декодируется в массив байтов ARGB во время создания изображения. Это означает, что 8K png с размерами 176x208 занимает максимальную память около 170K для загрузки, а память, используемая самим объектом Image, составляет около 145K! На других телефонах, таких как Nokia, Sony Ericsson и т. Д., Одно и то же изображение занимает около 16 тыс., Чтобы загрузить и сохранить в памяти. Я не знаю, какие умные оптимизации они используют, но по какой-то непонятной причине в JVM от Motorola нет.
Это разрушает хаос в моем приложении J2ME, поэтому почти невозможно запустить достойную версию его на телефонах Motorola. Я пробовал различные обходные пути, например, используя массив gzip'd ARGB-байтов изображения и дефляцию его во время краски, но это заставляет краску замедляться в 10 раз!
Кто-нибудь знает об обходном пути к этой проблеме? Декодер изображений PNG с открытым исходным кодом для J2ME с умственными способностями, которых не хватает Motorola? Или есть что-то, что можно сделать с изображением PNG, чтобы уменьшить его объем памяти? (Я в настоящее время используется индексированный режим PNG) Любые указатели на всех будет приветствоваться ..
Gowri
Какой телефон вы используете? Я не знаком с телефонами Motorola, которые фактически хранят изображения в 4 байт на пиксель. Обычно это 2 байта на пиксель. – Fostah 2008-11-15 19:28:56