2016-04-14 109 views
0

不幸的是我找到的解决方案在Android 5.1.1上无法使用。 我有一个名为源的位图。我需要将它直接保存到我的手机画廊。我的清单包含<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 你能给我一个工作方法来做到这一点吗?如何将位图保存到Android Gallery

+1

@Mihalil你可以在这里发布你的解决方案吗? – dex

+0

@MihalilЧёткаяава –

回答

9

使用这一个:

private void saveImage(Bitmap finalBitmap, String image_name) { 

     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root); 
     myDir.mkdirs(); 
     String fname = "Image-" + image_name+ ".jpg"; 
     File file = new File(myDir, fname); 
     if (file.exists()) file.delete(); 
     Log.i("LOAD", root + fname); 
     try { 
      FileOutputStream out = new FileOutputStream(file); 
      finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
      out.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
0

做,在一号线 MediaStore.Images.Media.insertImage(applicationContext.getContentResolver(), IMAGE ,"nameofimage" , "description");

0

使用此代码这一点,我们帮您将图像存储到这是saved_images和文件夹的图像的特定文件夹显示画廊立即。

private void SaveImage(Bitmap finalBitmap) { 

String root = Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_PICTURES).toString(); 
File myDir = new File(root + "/saved_images"); 
myDir.mkdirs(); 
Random generator = new Random(); 

int n = 10000; 
n = generator.nextInt(n); 
String fname = "Image-"+ n +".jpg"; 
File file = new File (myDir, fname); 
if (file.exists()) file.delete(); 
try { 
    FileOutputStream out = new FileOutputStream(file); 
    finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
    // sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
    //  Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 
    out.flush(); 
    out.close(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
// Tell the media scanner about the new file so that it is 
// immediately available to the user. 
MediaScannerConnection.scanFile(this, new String[]{file.toString()}, null, 
    new MediaScannerConnection.OnScanCompletedListener() { 
     public void onScanCompleted(String path, Uri uri) { 
      Log.i("ExternalStorage", "Scanned " + path + ":"); 
      Log.i("ExternalStorage", "-> uri=" + uri); 
     } 
    }); 
}