Добавьте приведенный ниже код в свой фрагмент / действие, чтобы выбрать изображение с камеры или галереи.Это значения int для вашего запроса камеры или галереи
public static final int MY_PERMISSIONS_REQUEST_CAMERA = 001;
public static final int MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE = 002;
Пользовательский класс камеры Android для установки аспектов и фиксированного размера изображения с камеры
Camera camera;
camera = new Camera.Builder()
.resetToCorrectOrientation(true) // it will rotate the camera bitmap to the correct orientation from meta data
.setTakePhotoRequestCode(1)
.setDirectory("pics")
.setName("PicName_" + System.currentTimeMillis())
.setImageFormat(Camera.IMAGE_JPEG)
.setCompression(75)
.setImageHeight(1000) // it will try to achieve this height as close as possible maintaining the aspect ratio;
.build(this);
Проверьте необходимые разрешения
if (ContextCompat.checkSelfPermission(getContext(),
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity)
getContext(), Manifest.permission.CAMERA)) {
} else {
ActivityCompat.requestPermissions((Activity) getContext(),
new String[]{Manifest.permission.CAMERA},
MY_PERMISSIONS_REQUEST_CAMERA);
}
}
if (ContextCompat.checkSelfPermission(getContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity)
getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
} else {
ActivityCompat.requestPermissions((Activity) getContext(),
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_EXTERNAL_STORAGE);
}
}
Выберите изображение из галереи
/* Choose an image from Gallery */
void openImageChooser() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, SELECT_PICTURE);
}
Сделайте снимок с камеры
textCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
camera.takePicture();
}catch (Exception e){
e.printStackTrace();
}
dialog.dismiss();
}
});
В результате активности получите выбранное изображение в виде растрового изображения / base64 по вашему выбору
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK) {
try {
final Uri imageUri = data.getData();
final InputStream imageStream = getActivity().getContentResolver().openInputStream(imageUri);
final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
selectedImage.compress(Bitmap.CompressFormat.PNG, 40, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
Log.e("byte_array ", byteArray.toString());
imgBase = Base64.encode(byteArray);
imagePath = "data:image/png;base64," + imgBase;
Log.e("path_of_gallery", imgBase.toString());
// Set the image in ImageView
imgUserProfilePicture.setImageBitmap(selectedImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} else {
Bitmap bitmap = camera.getCameraBitmap();
if(bitmap != null) {
imgUserProfilePicture.setImageBitmap(bitmap);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
Log.e("byte_array ", byteArray.toString());
imgBase = Base64.encode(byteArray);
imagePath = "data:image/png;base64," + imgBase;
Log.e("path_of_camera_img", imgBase.toString());
}else{
Toast.makeText(context,"Picture not taken!",Toast.LENGTH_SHORT).show();
}
}
}