Я работаю над приложением с SQLite и хочу иметь возможность выбрать изображение профиля для пользователя (оно будет сохранено локально).По сути, у меня есть действие обрезки, и я хочу выбрать изображение, обрезать его и сжать, затем я хочу сохранить его в телефоне по определенному пути хранения, который не будет удален при очистке кэша и также не будет виден вГалерея телефона (важно).В то же время я хочу, чтобы новый путь был сохранен в моей базе данных SQLite, чтобы его можно было использовать для быстрой загрузки изображения в ImageView там, где это необходимо.
Это код, в который я загружаю, кадрирую,сжать, а также предварительно просмотреть изображение в тестовом ImageView.
public void chooseProfilePicture(){
CropImage.activity().setGuidelines(CropImageView.Guidelines.ON).setAspectRatio(1,1).start(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
{
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode == RESULT_OK)
{
assert result != null;
profileImageURI = result.getUri();
File thumbnailURI = new File(Objects.requireNonNull(profileImageURI.getPath()));
try
{
compressedImageFile = new Compressor(activity_user_data.this)
.setMaxHeight(400)
.setMaxWidth(400)
.setQuality(90)
.compressToBitmap(thumbnailURI);
}
catch (IOException e)
{
e.printStackTrace();
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
compressedImageFile.compress(Bitmap.CompressFormat.JPEG, 90, byteArrayOutputStream);
profilePicker.setImageBitmap(compressedImageFile);
isImageSelected = true;
}
else
if(resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE)
{
assert result != null;
Exception error = result.getError();
}
}
}