uri = context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
if (null != uri) {
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, context.getContentResolver().openOutputStream(uri));//使用uri打开输出流
}
三、图片保存示例代码
AndroidQ保存图片示例
public static void asynAddImageQ(final Context context, final Bitmap bitmap, final String path, final String fileName, final String mimeType,
final long date, final Location location, final int quality, final int orientation
, final int width, final int height,
final OnScanCompletedListener listener) {
QThreadExecutorProxy.getInstance().runOnAsyncThread(() -> {
String title = fileName;
if (title != null) {
int index = title.lastIndexOf(".");
if (index > 0) {
title = title.substring(0, index);
}
}
ContentValues values = new ContentValues(9);
values.put(ImageColumns.TITLE, title);
values.put(ImageColumns.DISPLAY_NAME, fileName);
values.put(ImageColumns.DATE_TAKEN, date);
values.put(ImageColumns.MIME_TYPE, mimeType);
values.put(ImageColumns.ORIENTATION, orientation);
setImageSize(values, width, height);
if (location != null) {
values.put(ImageColumns.LATITUDE, location.getLatitude());
values.put(ImageColumns.LONGITUDE, location.getLongitude());
}
values.put(MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM + File.separator + Constance.SYSTEM_CAMERA_FOLDER);//AndroidQ存储目录
Uri uri = null;
try {
uri = context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
if (null != uri) {
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, context.getContentResolver().openOutputStream(uri));
}
} catch (Throwable th) {
Log.e(TAG, "Failed to write MediaStore" + th);
}
if (listener != null) {
listener.onScanCompleted(path + File.separator + fileName, uri, orientation);
}
});
}