我在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();
}
答案 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卡文件夹。