2016-07-02 2 views
1

В моем андроида приложения я генерировать код Qr затем сохранить его в качестве изображения JPEG, я использую этот код:Сохранить Bitmap как изображение 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); 

что вызвало эту проблему ???

+0

Какое исключение вы получаете? пожалуйста, опубликуйте журнал ошибок – Newbiee

+0

Вы ориентируетесь на API 23? Вы запросили разрешение на хранение во время выполнения? – ianhanniballake

+0

FileNotFound Exception @Newbiee –

ответ

2

что вызвало эту проблему ???

Заявление 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"); 

и увидеть результаты?

Смежные вопросы