Сохранить изображение выбранное из галереи
Как я могу сохранить изображение выбранное из галереи по такому же принципу
@SuppressLint("QueryPermissionsNeeded")
public void createPhoto() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(packageManager) != null) {
File photoFile = null;
try {
photoFile = createPhotoFile();
} catch (IOException ex) {
ex.printStackTrace();
}
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(activity,
"com.example.notes.android.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
activity.startActivityForResult(takePictureIntent, REQUEST_CAMERA);
}
}
}
public File createPhotoFile() throws IOException {
File image = File.createTempFile(String.valueOf(System.currentTimeMillis()), ".jpg", storageDir);
setPhotoPath(image.getAbsolutePath());
return image;
}
Фотографии сделанные на фотокамеру сохраняются отлично, не получается так же сохранить картинку из галереи
@SuppressLint("QueryPermissionsNeeded")
public void createImage() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
if (intent.resolveActivity(packageManager) != null) {
activity.startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);
}
}
Ответы (2 шт):
Автор решения: Arty Morris
→ Ссылка
Сохранить изображение можно так
private void SavePicture(ImageView iv) {
OutputStream fOut = null;
try {
File file = new File("/storage/emulated/0/Android/data/______/background.jpg"); // создать уникальное имя для файла основываясь на дате сохранения
fOut = new FileOutputStream(file);
Bitmap bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap();
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut); // сохранять картинку в jpeg-формате с 85% сжатия.
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); // регистрация в фотоальбоме
}
catch (Exception e) {
}
}
Автор решения: Vlad Orlinskas
→ Ссылка
Для сохранения изображения используйте метод
private fun saveImage(image: Bitmap): String? {
var savedImagePath: String? = null
val imageFileName = "JPEG_" + "FILE_NAME" + ".jpg"
val storageDir = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
.toString() + "/YOUR_FOLDER_NAME"
)
var success = true
if (!storageDir.exists()) {
success = storageDir.mkdirs()
}
if (success) {
val imageFile = File(storageDir, imageFileName)
savedImagePath = imageFile.getAbsolutePath()
try {
val fOut: OutputStream = FileOutputStream(imageFile)
image.compress(Bitmap.CompressFormat.JPEG, 100, fOut)
fOut.close()
} catch (e: Exception) {
e.printStackTrace()
}
galleryAddPic(savedImagePath)
}
return savedImagePath
}
Для сохранения изображения по url, нужно сначала нужно получить bitmap данного изображения. Попробуйте использовать Glide.
implementation 'com.github.bumptech.glide:glide:4.12.0'
Метод получения bitmap
private fun getImageFrom(url: String): Bitmap? {
return Glide.with(context)
.asBitmap()
.load(url)
.placeholder(android.R.drawable.progress_indeterminate_horizontal) // любое изображение
.error(android.R.drawable.stat_notify_error) // любое изображение
.submit()
.get()
}
Подробнее: