2015-06-19 119 views
1

我使用下面的代码将位图图像(从布局捕获)保存到android默认图片目录中。看起来保存的图像已损坏,因为Gallery无法打开它。将位图保存到android默认图片目录

当我将位图保存在另一个位置时,画廊可以打开它。但是当我将它保存到android默认目录时它不会打开。

public void saveToGallery() { 
     String path = Environment.getExternalStorageDirectory().toString() 
       + "/Pictures/Keshavarzi/" + "screenshot-" + System.currentTimeMillis() + ".png"; 

     ViewGroup v = (ViewGroup) findViewById(R.id.lyt_main_report_activity); 
     v.setDrawingCacheEnabled(true); 
     v.setDrawingCacheEnabled(true); 
     v.buildDrawingCache(); 
     Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache()); 
     v.setDrawingCacheEnabled(false); 



     OutputStream out = null; 
     File imageFile = new File(path); 

     try { 
      out = new FileOutputStream(imageFile); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (out != null) { 
        out.close(); 
       } 

      } catch (Exception exc) { 
      } 

     } 


     ContentValues values = new ContentValues(); 
     values.put(MediaStore.Images.Media.TITLE, "Title"); 
     values.put(MediaStore.Images.Media.DESCRIPTION, "Description"); 
     values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); 
     values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); 
     values.put(MediaStore.MediaColumns.DATA, path); 

     getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 


     MHToast.showToast(getString(R.string.saved_in_gallery), Toast.LENGTH_LONG); 
    } 
+0

你必须检查它是否存在或不是文件路径。如果不存在,则创建它。 – Pankaj

回答

1

试试这个,请检查您的保存目录的存在,或先创建目录,然后保存位图,

String path = Environment.getExternalStorageDirectory().toString() 
      + "/Pictures/Keshavarzi/" + "screenshot-" + 

System.currentTimeMillis() + ".png"; 
File imageFile = new File(path); 
if(!imageFile.getParentFile().exists()){ 
     imageFile.getParentFile().mkDirs(); 
} 
+0

您的回答是正确的,问题是我没有检查路径是否存在。但getParent()返回String。我为父目录创建一个新文件并检查它。请编辑你的答案,以便我可以接受它 –

+0

对不起我的错误:)。答案已更新。 – WonderSoftwares