2010-06-19 189 views
0

位图我使用压缩位图对象的OutputStream“压缩”功能。这里是我的代码:discripencies同时压缩在谷歌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和英雄这段代码

,我得到一个正确的输出流(这是我后来保存到SD卡上的一个图像文件)。但是,当我在Google nexus上测试此代码时,我在转换图像文件中的输出流之后得到模糊的图像。

FYI

OS:机器人1.5; G1和英雄是在1.5操作系统和2.0的联系

请帮助..是否有一个已知的问题在nexus?或者我做错了什么?

回答

1

检查Game Development for Android: A Quick Primer

Step Three: Carefully Design the Best Game Ever

与纹理压缩 的问题是,不同的图形卡 厂商支持不同的纹理 格式。 G1和其他MSM7k 设备支持ATI的ATITC 压缩格式。 Droid支持PowerVR的PVRTC格式 。 Nvidia的 Tegra2平台支持DXT 格式。坏消息是,这些格式 不兼容。好消息是,所有OpenGL ES 2.0设备(包括基于Snapdragon的Nexus One的 ,基于OMAP3的Droid和基于Tegra2设备的 ) 都支持被称为ETC1的通用格式。 ETC1不是最好的纹理格式(它 缺乏支持阿尔法频道),并且 它不支持该第一 发电装置,但它是支持的最常见 格式(在Android SDK提供了一种压缩机效用(见 SDK /工具/ etc1tool)这种格式和运行时工具 )。