解码用相机拍摄的图像时出错

时间:2013-12-13 16:43:04

标签: android bitmap camera decoding

我正在启动相机以在外部存储器中捕获存储在特定文件夹中的新文件中的图片。

问题在于,当我尝试使用BitmapFactory.decodeFile()方法中的onActivityResult()解码文件中的图像时,返回的图像为null。这是因为文件尚未完成(即相机的处理尚未完成以保存图像)?我该如何解决这个问题?

以下是我启动相机的代码:

private void launchCamera() {
    //create folder
    File imagesFolder = new File(
            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
            Consts.MEDIA_EXTERNAL_FOLDER);
    if(!imagesFolder.exists())
        imagesFolder.mkdirs();
    String fileName = "pic_"+Consts.CAMERA_DATE_FORMAT.format(new Date());
    File image = null;
    try {
        image = File.createTempFile(fileName, ".jpg", imagesFolder);
    } catch(IOException e) {
        Log.e(TAG, "Error creating new file.");
    }
    capturedImageURI = Uri.parse(image.getAbsolutePath());

    //launch camera
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageURI);
    startActivityForResult(intent, CAMERA_ACTION);
}

这是我在onActivityResult()

中获取图片的时候
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {

        case CAMERA_ACTION:
            getContentResolver().notifyChange(capturedImageURI, null);
            File f = new File(capturedImageURI.toString());

            decodedBitmap = Helper.decodeSampledBitmapFromResource(filePath);
            ImageView imageView = new ImageView(this);
            imageView.setImageBitmap(decodedBitmap);

            break;
     }

1 个答案:

答案 0 :(得分:1)

  

我该如何解决这个问题?

File,AFAIK,不了解file:///网址格式,这是您从capturedImageURI.toString()获得的格式。而不是重新生成File,而是使用您已经创建的那个。