2010-06-19 65 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)這種格式和運行時工具 )。