2013-08-18 87 views
0

我有一個應用程序,它會拍攝照片並將其保存在文件中。之後,該文件應該被轉換成位圖。我試圖將文件轉換爲位圖和字節數組到位圖,但都在實際設備中崩潰。這裏是我的代碼:解碼文件到位圖崩潰的應用程序

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    Bitmap bmp1; 

    File dir_image2 = new File(Environment.getExternalStorageDirectory()+ 
      File.separator+"Ultimate Entity Detector"); 
    dir_image2.mkdirs(); 

    String path = (Environment.getExternalStorageDirectory()+ 
      File.separator+"Ultimate Entity Detector"+File.separator+"TempGhost.jpg"); 

    File tmpFile = new File(dir_image2,"TempGhost.jpg"); 
    try { 
     FileOutputStream fos = new FileOutputStream(tmpFile); 
     fos.write(data); 
     fos.close(); 

    } catch (FileNotFoundException e) { 
     Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 
    } catch (IOException e) { 
     Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 
    } 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    Toast.makeText(getApplicationContext(),"DoneOP",Toast.LENGTH_LONG).show(); 

    //FOR THE CONVERSION I USE : 
    bmp1 = BitmapFactory.decodeFile(path, options);//File to bitmap  <------ 

    //OR 
    bmp1 = BitmapFactory.decodeByteArray(data , 0, 
            data.length,options);//Byte array to bitmap <------ 
    //BUT BOTH CRASH 
} 
}; 

我的代碼有什麼問題嗎?有沒有其他方法可以將我在 (FileOutputStream,Byte Array,File)上面的圖像轉換爲位圖?有沒有辦法將文件放在一個imageView中,而不用將其轉換爲位圖?

更新:我測試的應用程序在更多的設備,我發現,它的正常運行對三星Galaxy名聲和星系ÿ提前,但它崩潰的XPERIA T.

回答

2

我已經回答了類似的問題的類型。你可以在這個鏈接上使用SO來參考我的這個答案:Android - Bitmap cache takes a lot of memory

+0

感謝兄弟你的函數用xperia T修復了問題T – mremremre1

+0

@ mremremre1:如果它幫助你在該鏈接上得到答案,以便其他人也可以從它。 – Arshu

+0

我還在其他問題上添加了它,旁邊有您的名字。檢查出來http://stackoverflow.com/questions/18289544/taking-screenshot-programmatically-doesnt-capture-the-contents-of-surfaceview(看我的答案代碼的底部) – mremremre1