Android将图像保存在外部存储中

时间:2013-10-28 07:01:32

标签: android

我在Android上工作,用于在SD卡中保存多个图像,但它也可以在图库和特定文件夹中保存... 任何人都可以提供帮助 感谢..

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_PIC_REQUEST);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_PIC_REQUEST) {
        // 2
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

        mImage.setImageBitmap(thumbnail);
        CharSequence time2 = android.text.format.DateFormat.format(
                "yymmddhhmmss", new java.util.Date());
        String date1 = time2.toString();

        //ByteArrayOutputStream bytes = new ByteArrayOutputStream();
         try {

                thumbnail .compress(CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory()
        .getAbsolutePath()  + "/mypics/img" + date1 + ".png"));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


    } else
        Toast.makeText(getBaseContext(), "Please take snap again",
                Toast.LENGTH_LONG).show();
}       

2 个答案:

答案 0 :(得分:2)

尝试这样::

使用此功能将位图保存在SD卡

private void SaveIamge(Bitmap finalBitmap) {

String root = Environment.getExternalStorageDirectory().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);
       out.flush();
       out.close();

} catch (Exception e) {
       e.printStackTrace();
}
}

并在清单中添加此权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

保存在图库中只需添加以下内容:

sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
        Uri.parse("file://" + Environment.getExternalStorageDirectory())));

答案 1 :(得分:1)

如果您不希望图库中显示/mypics/img/文件夹中的图像。您所需要做的就是:

  

.nomedia中加入名为/mypcis/img/的空文件   目录(注意文件名中的点前缀)。这会阻止   Android的媒体扫描程序可以读取您的媒体文件并包括在内   它们在Gallery或Music等应用中。

注意:对于某些设备,这仅适用于新文件夹(不是已经扫描过的文件夹)所以我的建议是创建一个包含.nomedia文件的新文件夹,并将图像存储到该文件夹​​中。现在他们不会出现在画廊中。仅限外部SD卡文件夹。