我正在尝试从图片库中获取文件,然后上传。
但在上传过程之前,我想压缩图像文件。
所以这是选择图片时的代码,我将文件路径保存在全局变量中(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);
那我在做什么错了?我怎么解决它?
感谢您提供任何帮助
答案 0 :(得分:2)
您没有创建任何文件将此行添加到您的代码中并尝试
compressedPictureFile = new File(selectedPath1);
if (!compressedPictureFile.exists()) {
compressedPictureFile.createNewFile();
}
如果文件路径是Sd卡,则添加此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />