繁体   English   中英

引用Android SD卡上的文件

[英]Referencing a file on SD-Card, Android

我目前正在尝试对android中的图像执行相同的操作(OCR),一种选择是使用相机,另一种选择是从SD-CARD加载图像。 该代码在从代码所在的相机拍摄时有效

Bitmap bitmap = BitmapFactory.decodeFile(_path,options);

其中_path等于使用该应用程序拍摄的最后一张图片( _path = DATA_PATH + "ocr.jpg"; )。 但是,当我尝试使用从_path相等的图库中选择的图像时,

imageCaptureUri = data.getData();
_path = imageCaptureUri.getPath();

程序因错误而锁定

失败发送结果ResultInfo {who = null,请求= 2,结果= -1,数据=意图{dat = content:// media / external / images / media / 26 typ = image / jpeg(has extras)}}到活动{com.project.projectActivity}:java.lang.NullPointerException

如果有人对发生的事情有任何想法,我想听听您的消息!

您可以获取图像的路径。

_path = getPath(imageCaptureUri);


public String getPath(Uri uri) {
String[] projection = { MediaColumns.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
column_index = cursor
    .getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
imagePath = cursor.getString(column_index);

return cursor.getString(column_index);
}

接着

Bitmap bitmap = BitmapFactory.decodeFile(_path,options);

注意 :如果要裁剪图像,则此方法在这种情况下不起作用,因此Gallery会在要裁剪的图像的同一目录上生成裁剪的图像。

图库向您返回一个Uri来访问图像。

您需要使用BitmapFactory中的decodeStream方法,为此,您需要在给定的Uri上打开InputStream:

InputStream is = getContentResolver().openInputStream(imageCaptureUri);
Bitmap bitmap = BitmapFactory.decodeStream(is, options);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM