【问题标题】:Saving Image in a seperate directory in android将图像保存在android中的单独目录中
【发布时间】:2015-04-22 10:11:19
【问题描述】:

我可以从此代码中获取图片,但我无法将图片保存到自定义目录 Uri uriTarget = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues()); 我认为这可能是我必须更改代码的地方 想要创建一个自定义目录并将我的图像保存在那里

Camera.ShutterCallback myShutterCallback = new Camera.ShutterCallback(){



        @Override
        public void onShutter() {
            // TODO Auto-generated method stub

        }};

    Camera.PictureCallback myPictureCallback_RAW = new Camera.PictureCallback(){

        @Override
        public void onPictureTaken(byte[] arg0, Camera arg1) {
            // TODO Auto-generated method stub

        }};

    Camera.PictureCallback myPictureCallback_JPG = new Camera.PictureCallback(){

        @Override
        public void onPictureTaken(byte[] arg0, Camera arg1) {
            // TODO Auto-generated method stub



            Uri uriTarget = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());


            OutputStream imageFileOS;

            try {

                imageFileOS = getContentResolver().openOutputStream(uriTarget);

                imageFileOS.write(arg0);

                imageFileOS.flush();

                imageFileOS.close();



                Toast.makeText(MainActivity.this,

                        "waH kiAa selfie hAi :D ",
                        //+ 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();
        }};

【问题讨论】:

  • 您的清单文件中有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 吗?
  • 是的,我上面提到的代码是将图片保存在相机默认目录中,但我想将其保存在自定义目录中

标签: android android-camera surfaceview


【解决方案1】:

试试这个方法...

        private void saveImage(byte[] arg0) {
            String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "YOUR_CUSTOM_FOLDER";
            File myDir = new File(root);
            myDir.mkdirs();
            String fname = "YOUR_IMAGE_NAME" + ".jpg";
            file = new File(myDir, fname);
            if (file.exists()) {
                file.delete();
            }

            Bitmap bitmap1 = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);
            FileOutputStream out;
            try {
                out = new FileOutputStream(file);
                bitmap1.compress(Bitmap.CompressFormat.JPEG, 90, out);
                out.flush();
                out.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            MediaStore.Images.Media.insertImage(activity.getContentResolver(), bitmap1, "", "");
        }

【讨论】:

  • 你打算保存图片的地方,你应该粘贴代码。
  • @Brendom,你的陈述是矛盾的陈述,你的说法不起作用..你说把代码放在哪里......你没有尝试过,也不知道在哪里添加代码?
  • 我已将该代码放在 mypicturecallback 中,但它不起作用,请告诉我放在哪里??
  • 先检查回调是否触发,然后在回调中调用该方法
  • 您可以将函数 saveImage() 放在源文件中的任何位置,但不能放在 onPictureTaken() 中。在 onPictureTaken 中,您只需使用 saveImage(arg0); 调用它。 `
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
相关资源
最近更新 更多