Android - изменение размера каждого прикрепленного или захваченного изображения до ширины 768 пикселей

Вот мой код

@OnClick(R.id.choose_from_gallery_button)
public void pickImageFromGallery() {
    if (ContextCompat.checkSelfPermission(this,
            android.Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE},
                PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
    } else {
        sendOpenGalleryIntent();
    }
}

private void sendOpenGalleryIntent(){
    floatingMenu.close(true);
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    startActivityForResult(intent, CHOOSE_FROM_GALERY_REQUEST_CODE);
}


@OnClick(R.id.capture_photo_button)
public void capturePhoto() {
    if (ContextCompat.checkSelfPermission(this,
            android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},
                PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
    } else {
        sendStartCameraIntent();
    }
}

private void sendStartCameraIntent(){
    floatingMenu.close(true);
    try {
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        File tmpImageFile = createImageFile();

        //Uri used between Camera and MyMusala apps, created with FileProvider to support Android Nougat FileProvider flow
        Uri cameraUri = FileProvider.getUriForFile(this,
                BuildConfig.APPLICATION_ID + ".provider",tmpImageFile);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri);

        //Internal uri use only
        attachmentUri = Uri.fromFile(tmpImageFile);

        startActivityForResult(intent, TAKE_PICTURE_REQUEST_CODE);
    } catch (IOException e) {
        Toast.makeText(this, R.string.could_not_start_camera , Toast.LENGTH_SHORT).show();
        FirebaseCrash.report(e);
        Log.e(TAG, "Could not create tmp file for taking picture", e);
    }
}

Я хочу, чтобы можно было автоматически изменять размеры вложений до 768 пикселей в ширину (при нажатии на кнопку отправки он отправляется на почту, поэтому я не хочу загружать сервер с хранилищем).

Может кто-нибудь помочь мне с этим?

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK && data != null) {
        if (requestCode == CHOOSE_FROM_GALERY_REQUEST_CODE) {
            attachmentUri = data.getData();
        }
        Picasso.with(this).load(attachmentUri).into(imagePreview);
        attachmentImageName.setText(UriHelper.getFileName(this,attachmentUri));
        changeAttachmentVisibility(true);

    } else if (resultCode != Activity.RESULT_OK && requestCode == TAKE_PICTURE_REQUEST_CODE){
        //If take picture failed does not send attachment
        try {
            new File(attachmentUri.getPath()).delete();
        }catch (Exception e){
            //do nothing
        }
        attachmentUri = null;
    }
}

0 ответов

Другие вопросы по тегам