如何将拍摄的照片保存到特定文件夹? [复制]
Posted
技术标签:
【中文标题】如何将拍摄的照片保存到特定文件夹? [复制]【英文标题】:How to save taken pictures to a specific folder? [duplicate] 【发布时间】:2012-11-11 20:18:18 【问题描述】:可能重复:How to get camera result as a uri in data folder?
我正在拍摄一张照片,并将其保存在默认文件夹中。
这是我的PictureCallBack()
函数:
PictureCallback myPictureCallback_JPG = new PictureCallback()
public void onPictureTaken(byte[] arg0, Camera arg1)
Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());
OutputStream imageFileOS;
try
imageFileOS = getContentResolver().openOutputStream(uriTarget);
imageFileOS.write(arg0);
imageFileOS.flush();
imageFileOS.close();
Toast.makeText(MainActivity.this,"Image saved: " + uriTarget.toString(),Toast.LENGTH_LONG).show();
catch (FileNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
camera.startPreview();
;
如何将其保存在特定文件夹中,例如 "/sdcard/MyCustonApp/Photos/"
?
【问题讨论】:
【参考方案1】:添加到您的代码中
String path = Environment.getExternalStorageDirectory().toString();
File myNewFolder = new File(path + "/your/folder");
myNewFolder.mkdir();
File file = new File(path + "/your/folder", name + ".png");
OutputStream imageFileOS = new FileOutputStream(file);
【讨论】:
很好,但现在图片没有显示在图库中或显示时间过长。知道我做错了什么吗? 要在图库中显示图片,您必须将带有图像的文件添加到图库:MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), file.getName(), file。 getName()); 你是怎么解决的?你可以在这里复制你所有的代码吗!?!【参考方案2】:这是我检查要保存捕获的图像的文件夹是否存在,如果不存在则创建文件夹的方法。
Intent getCameraImage = new Intent("android.media.action.IMAGE_CAPTURE");
File cameraFolder;
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cameraFolder = new File(android.os.Environment.getExternalStorageDirectory(),"MyCustomApp/Photos");
else
cameraFolder = StatusUpdate.this.getCacheDir();
if(!cameraFolder.exists())
cameraFolder.mkdirs();
File photo = new File(Environment.getExternalStorageDirectory(), "MyCustomApp/Photos/camera_snap.jpg");
getCameraImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
Uri uri = Uri.fromFile(photo);
startActivityForResult(getCameraImage, 1);
这段代码会将捕获的图像保存到指定文件夹,名称为camera_snap,扩展名:.jpg
注意:这需要您在 Manifest
文件中声明以下权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
【讨论】:
我没有使用意图,我正在制作一个自定义相机应用程序。但是您检查文件夹是否存在的方式很有用。谢谢! @BrunoAlmeida:哦。我的错。很高兴其中一些有用。 :-)【参考方案3】:File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "image.jpg");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
看看这个链接。 How to save images from Camera in Android to specific folder?.
【讨论】:
谢谢,正是这个,不过之前有人回答过!【参考方案4】:试试这个简单的代码并将图像存储在一个文件夹中:
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/req_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-" + n + ".jpg";
file = new File(myDir, fname);
Log.i(TAG, "" + file);
if (file.exists())
file.delete();
try
FileOutputStream out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
catch (Exception e)
e.printStackTrace();
其中 bm 表示位图图像名称
【讨论】:
以上是关于如何将拍摄的照片保存到特定文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Android - 通过 Intent 拍摄照片并使用自定义名称将它们保存到自定义目的地