0

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

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

我已在 ddms 中签入 Facephoto 文件存在于 sd 卡上

我得到“空”位图可能是什么问题

4

5 回答 5

1

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

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!!");
}
于 2012-10-05T05:45:28.813 回答
1

您缺少斜杠,请按如下方式更改代码。

Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/FacePhoto.jpg"); 
于 2012-10-05T05:45:35.897 回答
0

尝试使用

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

使用“/文件名”而不是“文件名”。

如果这不起作用,请尝试使用

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

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

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

于 2012-10-05T05:43:47.613 回答
0

现在在活动结果上,您必须像这样使用。

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);
}
于 2012-10-05T05:45:25.177 回答
0

尝试以下操作:

     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);
于 2012-10-05T05:58:19.473 回答