我一直在尝试获取捕获的图像的路径,以便删除图像。在StackOverflow上找到了许多答案,但没有一个对我有效。我得到了以下答案:
private String getLastImagePath() {
final String[] imageColumns = { MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = POS.this.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns,
null, null, imageOrderBy);
if (imageCursor.moveToFirst()) {
// int id = imageCursor.getInt(imageCursor
// .getColumnIndex(MediaStore.Images.Media._ID));
String fullPath = imageCursor.getString(imageCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
return fullPath;
} else {
return "";
}
}
此代码在三星标签,但不工作在联想标签和i球标签。所以,有人能帮我找到另一个解决方案来做同样的事吗?任何帮助将不胜感激。谢谢。
这是我的活动结果:
if (requestCode == CmsInter.CAMERA_REQUEST && resultCode == RESULT_OK) {
//Bitmap photo = null;
//photo = (Bitmap) data.getExtras().get("data");
String txt = "";
if (im != null) {
String result = "";
//im.setImageBitmap(photo);
im.setTag("2");
int index = im.getId();
String path = getLastImagePath();
try {
bitmap1 = BitmapFactory.decodeFile(path, options);
bitmap = Bitmap.createScaledBitmap(bitmap1, 512, 400, false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] bytData = baos.toByteArray();
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
result = Base64.encode(bytData);
bytData = null;
} catch (OutOfMemoryError ooM) {
System.out.println("OutOfMemory Exception----->" + ooM);
bitmap1.recycle();
bitmap.recycle();
} finally {
bitmap1.recycle();
bitmap.recycle();
}
}
}
6条答案
按热度按时间wmtdaxz31#
像这样试试
如下所示传递摄像头意图
捕获图像后,写入
OnActivityResult
,如以下代码所示,这些代码复制自堆栈溢出答案在Android上获取图像的文件路径-检查日志。
编辑:
很多人都在问如何不获取缩略图,你需要为
getImageUri
方法添加以下代码:另一种方法是压缩文件。您可以通过更改数字
1000,1000
来调整大小g6ll5ycj2#
有一个解决方案来创建文件(在外部缓存目录或其他任何地方),并把这个文件的URI作为输出额外的相机意图-这将定义路径所采取的图片将被存储。
下面是一个例子:
然后,如果不再需要该文件,可以使用
file.delete();
将其删除顺便说一句,当用户从应用程序设置中清除应用程序的缓存时,缓存目录中的文件将被删除。
chhqkbe13#
尝试使用此方法获取摄像头捕获的
original
图像的路径。此方法将返回相机捕获的最后一张图像的路径。因此此路径将是原始图像,而不是缩略图位图。
yqlxgs2m4#
在这里我更新了Kotlin的示例代码。请注意,牛轧糖及以上版本
Uri.fromFile(file)
不工作,它崩溃的应用程序,需要实现FileProvider这是最安全的方式发送文件的意图。实现这一点,请参阅此answer或此articleg2ieeal75#
请参阅Google文档:Camera - Photo Basics
km0tfn4u6#
试试这个
用于捕获图像: