如何将图库图像存储在应用程序目录

时间:2017-01-19 11:39:21

标签: android

我直接从相机获取图像,画廊到我的应用程序中的图像视图一切正常。

现在我想要的是将此图像从Image View保存到应用程序目录,并在需要时访问它。

3 个答案:

答案 0 :(得分:1)

//You Can try This

File myDir = new File(Environment.getExternalStorageDirectory().toString() + "/yourDirectoryname");
        myDir.mkdirs();

        File file = new File(myDir, yourImagePath);
        if (file.exists()) file.delete();

        try {
            FileOutputStream out = new FileOutputStream(file);
            imgBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();

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

答案 1 :(得分:0)

public class EditProfile extends AppCompatActivity {
    ImageView imageView;
    EditText Name,Email,MobileNo;
    public static int count = 0;
    String  loginid;
    Bitmap bitmap;
    private static final int CAMERA_REQUEST = 1888;
    String picturePath;
    static   int i=0;
    private final int CAMERA_RESULT = 1;

    private final String Tag = getClass().getName();
    byte[] image = null;
    Button button1;
    static File out;
    String path1;
    ImageView imageView1;
    Bitmap photo   ;
    byte[] b=null;
    Button EditProfile;
    String Username;
    String name;
    String email;
    String Imgpath;
    String Imgpath1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_profile);


     EditProfile=(Button)findViewById(R.id.edit_profile);


        Imgpath=getSharedPreferences("Bytearray",0).getString("Bytearray",null);
        Imgpath1=getSharedPreferences("uri",0).getString("uri",null);
        imageView=(ImageView)findViewById(R.id.profile_photo);

        EditProfile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                selectImage();

            }
        });



    }

    private void selectImage() {



        final CharSequence[] options = { "Take Photo", "Choose from Gallery","Cancel" };



        AlertDialog.Builder builder = new AlertDialog.Builder(EditProfile.this);

        builder.setTitle("Add Photo!");

        builder.setItems(options, new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int item) {

                if (options[item].equals("Take Photo"))

                {
                    PackageManager pm = getPackageManager();

                    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {

                        Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                        i.putExtra(MediaStore.EXTRA_OUTPUT, MyFileContentProvider.CONTENT_URI);

                        startActivityForResult(i, CAMERA_RESULT);

                    } else {

                        Toast.makeText(getBaseContext(), "Camera is not available", Toast.LENGTH_LONG).show();

                    }


                }

                else if (options[item].equals("Choose from Gallery"))

                {

                    Intent intent = new   Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

                    startActivityForResult(intent, 2);



                }

                else if (options[item].equals("Cancel")) {

                    dialog.dismiss();

                }

            }

        });

        builder.show();

    }



    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK && requestCode == CAMERA_RESULT) {

            out = new File(getFilesDir(), "newImage.jpg");

            if(!out.exists()) {

                Toast.makeText(getBaseContext(),

                        "Error while capturing image", Toast.LENGTH_LONG)

                        .show();

                return;

            }

            Bitmap mBitmap = BitmapFactory.decodeFile(out.getAbsolutePath());
            String path=out.getAbsolutePath();

            getSharedPreferences("path",0).edit().putString("path",path).commit();

            imageView.setImageBitmap(mBitmap);

        }

        else if (requestCode == 2) {


                 imageView.setImageURI(selectedImage);

            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String filePath = cursor.getString(columnIndex);
            cursor.close();

            Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);

           // imageView.setImageBitmap(yourSelectedImage);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[]  byteArray = stream.toByteArray();


            Bitmap image=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);

            imageView.setImageBitmap(image);

        }

    }
}

答案 2 :(得分:0)

通过创建已知路径的文件来启动相机意图,并在图像捕获后,您的图像显示在该路径中:

 Uri capturedImageUri;//global variable
        private void initiateImageCapture() {
                Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
                    File photoFile = null;
                    try {
                        photoFile = createImageFile();
                        capturedImageUri = Uri.fromFile(photoFile);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    if (photoFile == null || capturedImageUri == null) {
                        Utils.showLongToast(getActivity(), "error");
                    } else {

                        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, capturedImageUri);

                        if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null)
                            startActivityForResult(takePictureIntent, Constants.INTENT_IMAGE_CAPTURE);
                        else
                            Utils.showLongToast(getActivity(), "try again);

                    }
                }
            }
  private File createImageFile() throws IOException {
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                .format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(imageFileName, /* prefix */
                ".jpg", /* suffix */
                storageDir /* directory */
        );
        return image;
    }