繁体   English   中英

无法解码位图图像返回null

[英]Can not decode bitmap Image returns null

我有相机应用程序点击图片并将其保存在SD卡上,当我解码它给出空位图这里是代码

Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"FacePhoto.jpg");

我已经在ddms中检查了sd卡上存在的Facephoto文件

这里有什么问题我得到“null”位图

您的图像路径可能有问题,只需像这样检查

File rootDir = Environment.getExternalStorageDirectory();
File file = new File(rootDir + "/FacePhoto.jpg");

if (file.exists())
{
    Bitmap bitmap = BitmapFactory.decodeFile(file);

}
else
{
   System.out.println("File Not Exists. Check the path!!");
}

您缺少斜杠,请按如下所示更改代码。

Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/FacePhoto.jpg"); 

尝试使用

Environment.getExternalStorageDirectory()+"/FacePhoto.jpg"

使用'/ filename'而不仅仅是'filename'。

如果这不起作用尝试使用

Environment.getExternalStorageDirectory().getAbsolutePath()+"/FacePhoto.jpg"

需要注意的是使用绝对路径而不是相对路径。

另请参阅代码中是否拼写正确的文件名。

现在在活动结果你必须这样使用。

if (requestCode == CAMERA) {
                final File file = getTempFile();

                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        try {
                            selPath = file.getAbsolutePath();
                            final String selectedImagePath = file
                                    .getAbsolutePath();
                            bitmap = BitmapFactory
                                    .decodeFile(selectedImagePath);
                            selPath = selectedImagePath;

                        } catch (Exception e) {
                            Log.v(TAG, "Exception: " + e.toString());
                            handler.sendEmptyMessage(IMAGENOTLOADED);
                        }
                    }
                }).start();
            }

getTempFile方法是这样的

private File getTempFile() {
    final File path = new File(Environment.getExternalStorageDirectory(),
            getPackageName());
    if (!path.exists()) {
        path.mkdir();
    }
    return new File(path, fileName);
}

尝试以下方法:

     FileInputStream instream = new FileInputStream("/sdcard/Pics/Image.png"); 
            BufferedInputStream bif = new BufferedInputStream(instream); 
            byteImage1 = new byte[bif.available()]; 
            bif.read(byteImage1); 
             BitmapFactory.decodeByteArray(byteImage1, 0, byteImage1.length);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM