Showing posts with label Profile. Show all posts
Showing posts with label Profile. Show all posts

Wednesday, March 2, 2016

Select Image From gallery or Capture from Camera and set as Profile Pic in Android


First of all Create a dialog to select whether you need to capture image from camera or pick from gallery as :


Code :


 private static Bitmap Image = null;
 private static Bitmap rotateImage = null;
 private static final int CAPTURE_IMAGE = 0;
 private static final int SELECT_PICTURE = 1;


 
 Dialog openDialog = new Dialog(getActivity());
 openDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
 openDialog.setContentView(R.layout.contact_add_builder_upload_pic_dialog);
 Window window = openDialog.getWindow();
 WindowManager.LayoutParams wlp = window.getAttributes();
 window.setGravity(Gravity.RIGHT |Gravity.TOP);
 openDialog.getWindow().getAttributes().verticalMargin =0.09F;
 openDialog.getWindow().getAttributes().horizontalMargin =0.09F;
 wlp.flags &=~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
 window.setAttributes(wlp);
 openDialog.show();

 final TextView galleryImgTv = (TextView) openDialog.findViewById
         (R.id.gallery_image);

 final TextView cameraImgTv = (TextView) openDialog.findViewById
         (R.id.camera_image);

galleryImgTv.setOnClickListener(new View.OnClickListener()
 {
     @Override     public void onClick (View v){
     Intent pickPhoto = new Intent(Intent.ACTION_PICK,
             android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
     startActivityForResult(pickPhoto, SELECT_PICTURE);
     openDialog.dismiss();
     }
 });

 cameraImgTv.setOnClickListener(new View.OnClickListener()
 {
     @Override     public void onClick (View view){
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     startActivityForResult(intent, CAPTURE_IMAGE);
     openDialog.dismiss();
     }
 });

 then override onActivityResult method as :

 @Override public void onActivityResult(int requestCode, int resultCode,
                              Intent data) {
     if (requestCode == CAPTURE_IMAGE) {
         onCaptureImageResult(data);
     } else if (requestCode == SELECT_PICTURE) {
         Uri mImageUri = data.getData();
         try {
             Image = MediaStore.Images.Media.getBitmap(getApplicationContext()
                     .getContentResolver(), mImageUri);
             if (getOrientation(getApplicationContext(), mImageUri) != 0) {
                 Matrix matrix = new Matrix();
                 matrix.postRotate(getOrientation(getActivity(), mImageUri));
                 if (rotateImage != null)
                     rotateImage.recycle();
                 rotateImage = Bitmap.createBitmap(Image, 0, 0,
                         Image.getWidth(), Image.getHeight(), matrix, true);
                 profile_pic.setImageBitmap(rotateImage);
             } else                 profile_pic.setImageBitmap(Image);
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }

 then

 public static int getOrientation(Context context, Uri photoUri) {
     Cursor cursor = context.getContentResolver().query(photoUri,
             new String[]{MediaStore.Images.ImageColumns.ORIENTATION},
             null, null, null);
     if (cursor.getCount() != 1) {
         return -1;
     }
     cursor.moveToFirst();
     return cursor.getInt(0);
 }

 and

 public void onCaptureImageResult(Intent data) {
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
     ByteArrayOutputStream bytes = new ByteArrayOutputStream();
     thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
     File destination = new File(Environment.getExternalStorageDirectory(),
             System.currentTimeMillis() + ".jpg");
     FileOutputStream fo;
     try {
         destination.createNewFile();
         fo = new FileOutputStream(destination);
         fo.write(bytes.toByteArray());
         fo.close();
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     }
     profile_pic.setImageBitmap(thumbnail);
 }