某些图像的Java android bitmap = null

时间:2017-04-12 13:00:35

标签: java android image bitmap null

我正在制作一个Android应用程序,允许用户拍照,然后应用程序将打印一些RGB值等。我正在保存手机上拍摄的照片,然后我从这些png文件中制作一个位图。我刚刚发现我应该暂停应用程序片刻才能保存图像。但我仍然认为我拍摄的一些图像的位图为空。如果我用它的6种不同颜色拍摄Rubik's cube的图像,我几乎从未得到空指针异常。但是如果我拍摄一张墙或其他东西的图​​片,那么位图就是= null。

有人知道我应该怎么做以解决这个问题吗?

Bitmap myBitmap;
final String dir =  
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + 
"/picFolder/";
try{
    file = dir+Integer.toString(side)+".jpg";
    File f = new File(file);
    options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    myBitmap = BitmapFactory.decodeFile(file,options);

    for(int i = 0; i<3; i++){
        for(int j = 0; j<3; j++){
            cube[side-1][i][j] = getColor(myBitmap, i, j);
        }
    }
}catch (Exception e){
    Log.e("er0r", "HERE:::: " + e.toString());

}

1 个答案:

答案 0 :(得分:0)

当我在我的应用程序中开发相机时,我也遇到了同样的问题。 对于某些图像,它工作正常,对于某些图像,它显示为null。 后来我发现这是一个尺寸问题。 我修正了这个问题,

private static Bitmap compressBitmap(Bitmap original) {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        original.compress(Bitmap.CompressFormat.JPEG, 100, out);
        Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));
        return decoded;
    }

如果您需要任何其他帮助,请与我们联系。