我有一个相机应用程序,在用户拍摄图像后,我将其保存到我制作的目录中的内部存储器中。 一切正常,图像保存在那里我可以加载并显示之后,但我也无法将图像保存到Android图库。
我想要的是将图像保存到内部目录后,将其复制到图库中。
我试过这个:
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.SIZE, file.length());
values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
文件是我保存在内部存储器中的图像。 使用这种方法,我得到的是图库中的破碎图像。
答案 0 :(得分:4)
将其复制到图库或在Android画廊中显示?
如果你想在Android画廊中显示图片?您可以通过扫描媒体执行此操作,这是如何扫描:
Uri uri = Uri.fromFile(file);
Intent scanFileIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
sendBroadcast(scanFileIntent);
如果您只想复制文件,请执行以下操作:
in = new FileInputStream(sourceFile);
out = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
答案 1 :(得分:0)
您可以使用此方法保存图像:
substr(ns_name, 1, instr(ns_name, '_', -1) - 1)
答案 2 :(得分:0)
这可能会有所帮助:
Uri selectedImageURI = data.getData();
imageFile = new File(getRealPathFromURI(selectedImageURI));
获取路径后,您可以通过以下方式存储图像:
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.SIZE, file.length());
values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
context.getContentResolver().insert(imageFile, values);
希望这有帮助。