У меня вопрос, как сохранить растровое изображение из моего приложения в галерею андроид внутри кнопки? Я просто хочу, чтобы мое растровое изображение было размещено в галерее, которую пользователь может использовать, чтобы установить его, возможно, на его фоне. Так как это происходит?Сохранить изображение в галерее
0
A
ответ
0
Вы измените следующую функцию в отелях
private void takeSnapShot(Bitmap bitmap) {
OutputStream outStream = null;
String state = Environment.getExternalStorageState();
String appName = mContext.getString(R.string.app_name);
if (state.equals(Environment.MEDIA_MOUNTED)) {
String sdroot = Environment.getExternalStorageDirectory().getAbsolutePath();
String path = sdroot + "/" + appName;
File dir = new File(path);
if (!dir.exists() && !dir.mkdirs()) {
return;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US);
String dstr = sdf.format(new Date());
String filename = path + "/" + dstr + ".jpg";
try {
outStream = new FileOutputStream(filename);
} catch (FileNotFoundException e) {
LogUtils.println("Exception while writing image");
e.printStackTrace();
}
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
try {
if (outStream != null)
outStream.close();
mMediaScanner.scanMediaByName(filename, R.string.snapshot_save);
} catch (IOException e) {
e.printStackTrace();
}
} else {
// Add some parameters to the image that will be stored in the Image ContentProvider
int UNIQUE_BUCKET_ID = 111;
String disp = "anything";
ContentValues values = new ContentValues(7);
values.put(MediaStore.Images.Media.DISPLAY_NAME, disp);
values.put(MediaStore.Images.Media.TITLE, disp);
values.put(MediaStore.Images.Media.DESCRIPTION, appName + disp);
values.put(MediaStore.Images.Media.BUCKET_DISPLAY_NAME, appName + " snapshot");
values.put(MediaStore.Images.Media.BUCKET_ID, UNIQUE_BUCKET_ID);
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
// Inserting the image meta data inside the content provider
Uri uri = mContext.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
try {
if (uri != null) {
outStream = mContext.getContentResolver().openOutputStream(uri);
if (outStream != null) {
outStream.close();
}
}
} catch (FileNotFoundException e) {
LogUtils.println("Exception while writing image");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
0
Вы можете сохранить изображение в галерее, как это.
MediaStore.Images.Media.insertImage (getContentResolver(), yourBitmap, yourTitle, yourDescription);
Попробуйте, как это
Изображения отображаются в галерее, которые хранятся на поставщика медиа-магазине
государственной статической силы addImageToGallery (конечная строка Filepath, окончательный контекст Context) {
ContentValues values = new ContentValues();
values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.MediaColumns.DATA, filePath);
context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
}
+0
Это не работает :( – Luca486
Возможно, вам стоит попробовать сохранить изображение в местоположении устройства, где Галерея считывает изображения. Например, DCIM или что-то в этом роде. –
Галерея - приложение, а не место. Вы храните изображения в месте, например [внешнее хранилище] (https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html). – CommonsWare
Хорошо и как я могу справиться с этим? Я пробовал так много версий, но ничего не работает для меня? Звучит так просто, просто чтобы сохранить его – Luca486