Android - 运行bitmap.compress时,它总是进入FileNotFoundException

时间:2014-03-19 12:28:11

标签: android file-upload bitmap bitmapimage

我正在尝试从图片库中获取文件,然后上传。

但在上传过程之前,我想压缩图像文件。

所以这是选择图片时的代码,我将文件路径保存在全局变量中(String selectedPath1) -

          if (resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();
            if (requestCode == SELECT_FILE1)
            {
                selectedPath1 = getPath(selectedImageUri);
             }
           }

然后我正在使用下一个代码来压缩图像 -

  try {
        Log.d("MAIN", "1");
        compressedPictureFile = new File(selectedPath1);
        Log.d("MAIN", "2");
        Bitmap bitmap = BitmapFactory.decodeFile(selectedPath1);
        Log.d("MAIN", "3");
        FileOutputStream fOut = new FileOutputStream(compressedPictureFile);
        Log.d("MAIN", "4");
        boolean compressed = bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fOut);
        Log.d("MAIN", "E5");

        if (compressed){
            Log.d("MAIN", "E6");
        }else{
            Log.d("MAIN", "E7");
        }
        Log.d("MAIN", "E8");
        fOut.flush();
        fOut.close();

    } catch (FileNotFoundException e1) {
        Log.d("MAIN", "E1");
        e1.printStackTrace();
    } catch (IOException e1) {
        Log.d("MAIN", "E2");
        e1.printStackTrace();
    }

当我运行代码时,我在logcat中看到它传递了[Log.d(“MAIN”,“3”);]行,然后显示 - [Log.d(“MAIN”) ,“E1”);]。

意味着问题出在下一行 -

FileOutputStream fOut = new FileOutputStream(compressedPictureFile);

那我在做什么错了?我怎么解决它?

感谢您提供任何帮助

1 个答案:

答案 0 :(得分:2)

您没有创建任何文件将此行添加到您的代码中并尝试

compressedPictureFile = new File(selectedPath1);
    if (!compressedPictureFile.exists()) {
        compressedPictureFile.createNewFile();
    }

如果文件路径是Sd卡,则添加此权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />