Android Studio - 将位图保存到图库不正确
Android Studio - Save bitmap to gallery is incorrect
所以我使用这个功能将位图保存到画廊,但我是初学者,所以不行。
public static String saveBitmapToGallery(Context context, Bitmap bitmap, String title, String desc){
return MediaStore.Images.Media.insertImage(context.getContentResolver(),bitmap, title, desc);
}
它在 AsyncTask 中调用 class。我将 return 值保存到 "saveUrl" 字符串。 (我检查了一下,它不为空。)
在 onPostExecute 中,我调用此函数(如果 "saveUrl" 为 null)来刷新图库:
MediaScannerConnection.scanFile(actualMainView.getContext(), new String[]{saveUrl}, null, null);
问题是文件创建不正确。大小为 0B,标题和创建日期不正确。并且缩略图在文件管理器中正确显示。
让它发挥作用缺少什么?预先感谢您的帮助!
试试这个,也许对你有帮助。
private void saveImage(Bitmap bitmatFile, String image_name) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root);
myDir.mkdirs();
String fname = "Image-" + image_name+ ".jpg";
File file = new File(myDir, fname);
if (file.exists()) file.delete();
Log.i("LOAD", root + fname);
try {
FileOutputStream fos = new FileOutputStream(file);
bitmatFile.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
所以我使用这个功能将位图保存到画廊,但我是初学者,所以不行。
public static String saveBitmapToGallery(Context context, Bitmap bitmap, String title, String desc){
return MediaStore.Images.Media.insertImage(context.getContentResolver(),bitmap, title, desc);
}
它在 AsyncTask 中调用 class。我将 return 值保存到 "saveUrl" 字符串。 (我检查了一下,它不为空。) 在 onPostExecute 中,我调用此函数(如果 "saveUrl" 为 null)来刷新图库:
MediaScannerConnection.scanFile(actualMainView.getContext(), new String[]{saveUrl}, null, null);
问题是文件创建不正确。大小为 0B,标题和创建日期不正确。并且缩略图在文件管理器中正确显示。 让它发挥作用缺少什么?预先感谢您的帮助!
试试这个,也许对你有帮助。
private void saveImage(Bitmap bitmatFile, String image_name) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root);
myDir.mkdirs();
String fname = "Image-" + image_name+ ".jpg";
File file = new File(myDir, fname);
if (file.exists()) file.delete();
Log.i("LOAD", root + fname);
try {
FileOutputStream fos = new FileOutputStream(file);
bitmatFile.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}