在我的android应用程序中,我生成一个qr代码,然后将其另存为jpeg图像,我使用以下代码:

imageView = (ImageView) findViewById(R.id.iv);
final Bitmap bitmap = getIntent().getParcelableExtra("pic");
imageView.setImageBitmap(bitmap);
save = (Button) findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            String path = Environment.getExternalStorageDirectory().toString();

            OutputStream fOutputStream = null;
            File file = new File(path + "/Captures/", "screen.jpg");
            if (!file.exists()) {
                file.mkdirs();
            }

            try {

                fOutputStream = new FileOutputStream(file);

                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutputStream);

                fOutputStream.flush();
                fOutputStream.close();
                MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                return;
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }
        }
    });


但它总是在行上捕获异常:

fOutputStream = new FileOutputStream(file);


是什么引起了这个问题?

最佳答案

是什么引起了这个问题?


语句file.mkdirs();创建了一个名为screen.jpg的目录。找到存在该名称的目录时,FileOutputStream无法创建名称为screen.jpg的文件。所以你得到:

java.io.FileNotFoundException


您能否替换以下代码段:

File file = new File(path + "/Captures/", "screen.jpg");
if (!file.exists()) {
   file.mkdirs();
}


通过以下片段:

String dirPath = path + "/Captures/";
File dirFile = new File(dirPath);
if(!dirFile.exists()){
   dirFile.mkdirs();
}
File file = new File(dirFile, "screen.jpg");


看看结果吗?

关于android - 将位图另存为jpeg图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38155824/

10-12 05:10