2010-06-19 6 views
0

Я сжимаю растровый объект на OutputStream с помощью Функция «Сжатие». Вот мой код:сценарии при сжатии растрового изображения на Google nexus

try { 
        if (bitmap != null) { 
         bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 
           bytes); 
        } else { 
         Message message = handler.obtainMessage(1, "false"); 
         handler.sendMessage(message); 
         return; 
        } 
       } catch (OutOfMemoryError oom) { 
        System.gc(); 
        Message message=handler.obtainMessage(1,"false"); 
        handler.sendMessage(message); 
        return; 
       } catch (NullPointerException npe) { 
        System.gc(); 
        Message message = handler.obtainMessage(1, "false"); 
        handler.sendMessage(message); 
        return; 
       } catch (Exception e) { 
        System.gc(); 
        Message message = handler.obtainMessage(1, "false"); 
        handler.sendMessage(message); 
        return; 
       } 

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

FYI

ОС: Android 1.5; G1 и Hero находятся на 1.5 ОС и nexus находится на 2.0

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

ответ

1

Проверить Game Development for Android: A Quick Primer.

От Step Three: Carefully Design the Best Game Ever:

Проблема компрессии текстур является то, что производители различных графических карт поддерживают различные текстуры форматы. G1 и другие устройства MSM7k поддерживают формат сжатия ATITC . Droid поддерживает Формат PVRTC PowerVR. Nvidia's Платформа Tegra2 поддерживает формат DXT . Плохая новость заключается в том, что эти форматы несовместимы. Хорошей новостью является: все устройства OpenGL ES 2.0 (включая Nexus One на базе Snapdragon, устройства Droid и устройства Tegra2 на базе OMAP3 на базе OMAP3) поддерживают общий формат ETC1. ETC1 не лучший формат текстур (это отсутствует поддержка альфа-каналов), и оно не поддерживается на первых устройств поколения, но это самый общий формат поддерживается (Андроид SDK предоставляет утилиту компрессора (см. sdk/tools/etc1tool) и инструменты времени выполнения для этого формата).