【问题标题】: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/"

【问题讨论】:

    标签: android file camera directory photo


    【解决方案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 表示位图图像名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多