保存拍摄到数据库的图片的图像路径

时间:2014-09-17 09:09:38

标签: android

我是Android开发的新手。我正在尝试创建一个应用程序,当用户拍照时,它的路径将保存到数据库中。我可以在图库中保存并检索图像,但如果相机拍摄,我该怎么保存?

这是我的代码

private void selectImage() {
                final CharSequence[] items = { "Take Photo", "Choose from Library",
                        "Cancel" };

                AlertDialog.Builder builder = new AlertDialog.Builder(Student_Profile.this);
                builder.setTitle("Add Photo");
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int item) {
                        if (items[item].equals("Take Photo")) {
                            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                            File f = new File(android.os.Environment
                                   .getExternalStorageDirectory(), "temp.jpg");

                           intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
                           startActivityForResult(intent, 1);

                        } else if (items[item].equals("Choose from Library")) {
                            Intent intent = new Intent(
                                    Intent.ACTION_PICK,
                                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                            intent.setType("image/*");
                            startActivityForResult(
                                    Intent.createChooser(intent, "Select File"),
                                    0);
                        } else if (items[item].equals("Cancel")) {
                            dialog.dismiss();
                        }
                    }
                });
                builder.show();
            }

        @Override
            public void onActivityResult( int requestCode, int resultCode, Intent data) {
                 super.onActivityResult(requestCode, resultCode, data);


                 if (resultCode == Activity.RESULT_OK){
                    if (requestCode == 0) {
                        studentsDbAdapter.delete_Pic_byID(studID);
                     Uri targetUri = data.getData();
                     picture_location=getPath(targetUri);
                    // picture_location = targetUri.toString();             
                     studentsDbAdapter.insertImagePath(studID ,picture_location);
                     showpic();
                 }   }

                 else if (requestCode == 1) {
                    // How do I get The URI?
                    // I'm thinking that maybe if I can get the Uri 
                    //from the new image I can save it like how I saved the image to my DB gallery style.
                    String pic_location=getPath(Uri);
                     studentsDbAdapter.insertImagePath(studID ,pic_location);
                     showpic();
                 }
                 }

             public String getPath(Uri uri) {
                 String[] projection = { MediaStore.Images.Media.DATA };
                 @SuppressWarnings("deprecation")
                Cursor cursor = managedQuery(uri, projection, null, null, null);
                 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                 cursor.moveToFirst();
                 return cursor.getString(column_index);
             }

            public void showpic() {

                //LoginDataBaseAdapter db = studentsDbAdapter.open();
                 boolean emptytab = false;
                 boolean empty = studentsDbAdapter.checkPic(null, emptytab);

                //Cursor cursor = loginDataBaseAdapter.fetchProfileImageFromDatabase();  

                 if(empty==false)  
                  {  



                    String pathName = studentsDbAdapter.getImapath(studID);
                    File image = new  File(pathName); 
                    if(image.exists()){
                             ImageView imageView= (ImageView) findViewById(R.id.studpic);
                             imageView.setImageBitmap(BitmapFactory.decodeFile(image.getAbsolutePath()));
                }
                  }
                 } 

1 个答案:

答案 0 :(得分:0)

试试这个。它可能对你有帮助。

if (fromGallery) {

   data.getData()); //get image data like this

} else {

bm = (Bitmap) data.getParcelableExtra("data");

}