public static bool >
代码获取方式:
2打开README,在命令行工具中执行下面的步骤:
3注意:如果你在使用NDK r9,编译的时候会出现错误:
解决的方法就是在Applicationmk中加入一行:
编译之后会生成classjar和一些so。
Android OCR Application
创建一个Android应用,把生成的jar和so导入进来。
创建TessOCR:
public class TessOCR {
构造函数中需要在存储卡上创建一个目录tessdata,如果不创建程序运行就会出错。因为源码中会检测这个目录,不存在就抛出异常:
现在通过三种方式获取做OCR:
在图库中选取一张图,选择发送或者分享,选择OCR应用
在AndroidManifestxml中加入IntentFilter,让OCR应用出现在图库的分享列表中:
获得URI之后,对URI解码,获取bitmap:
启动OCR应用,从图库中选择一张图做OCR
发送Intent调用图库,在onActivityResult中获取返回的URI做OCR:
Intent intent = new Intent(IntentACTION_PICK, androidproviderMediaSt
启动OCR应用,拍照之后做OCR
为了获取高质量的,在Intent中加入路径。返回之后就可以直接使用这个路径解码:
/
根据Uri获取绝对路径,解决Android44以上版本Uri转换
@param activity
@param imageUri
@author yaoxing
@date 2014-10-12
/
@TargetApi(19)
public static String getImageAbsolutePath(Activity context, Uri imageUri) {
if (context == null || imageUri == null)
return null;
if (androidosBuildVERSIONSDK_INT >= androidosBuildVERSION_CODESKITKAT && DocumentsContractisDocumentUri(context, imageUri)) {
if (isExternalStorageDocument(imageUri)) {
String docId = DocumentsContractgetDocumentId(imageUri);
String[] split = docIdsplit(":");
String type = split[0];
if ("primary"equalsIgnoreCase(type)) {
return EnvironmentgetExternalStorageDirectory() + "/" + split[1];
}
} else if (isDownloadsDocument(imageUri)) {
String id = DocumentsContractgetDocumentId(imageUri);
Uri contentUri = ContentUriswithAppendedId(Uriparse("content://downloads/public_downloads"), LongvalueOf(id));
return getDataColumn(context, contentUri, null, null);
} else if (isMediaDocument(imageUri)) {
String docId = DocumentsContractgetDocumentId(imageUri);
String[] split = docIdsplit(":");
String type = split[0];
Uri contentUri = null;
if ("image"equals(type)) {
contentUri = MediaStoreImagesMediaEXTERNAL_CONTENT_URI;
} else if ("video"equals(type)) {
contentUri = MediaStoreVideoMediaEXTERNAL_CONTENT_URI;
} else if ("audio"equals(type)) {
contentUri = MediaStoreAudioMediaEXTERNAL_CONTENT_URI;
}
String selection = MediaStoreImagesMedia_ID + "=";
String[] selectionArgs = new String[] { split[1] };
return getDataColumn(context, contentUri, selection, selectionArgs);
}
} // MediaStore (and general)
else if ("content"equalsIgnoreCase(imageUrigetScheme())) {
// Return the remote address
if (isGooglePhotosUri(imageUri))
return imageUrigetLastPathSegment();
return getDataColumn(context, imageUri, null, null);
}
// File
else if ("file"equalsIgnoreCase(imageUrigetScheme())) {
return imageUrigetPath();
}
return null;
}
public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null;
String column = MediaStoreImagesMediaDATA;
String[] projection = { column };
try {
cursor = contextgetContentResolver()query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursormoveToFirst()) {
int index = cursorgetColumnIndexOrThrow(column);
return cursorgetString(index);
}
} finally {
if (cursor != null)
cursorclose();
}
return null;
}
/
@param uri The Uri to check
@return Whether the Uri authority is ExternalStorageProvider
/
public static boolean isExternalStorageDocument(Uri uri) {
return "comandroidexternalstoragedocuments"equals(urigetAuthority());
}
/
@param uri The Uri to check
@return Whether the Uri authority is DownloadsProvider
/
public static boolean isDownloadsDocument(Uri uri) {
return "comandroidprovidersdownloadsdocuments"equals(urigetAuthority());
}
/
@param uri The Uri to check
@return Whether the Uri authority is MediaProvider
/
public static boolean isMediaDocument(Uri uri) {
return "comandroidprovidersmediadocuments"equals(urigetAuthority());
}
/
@param uri The Uri to check
@return Whether the Uri authority is Google Photos
/
public static boolean isGooglePhotosUri(Uri uri) {
return "comgoogleandroidappsphotoscontent"equals(urigetAuthority());
}
ContentResolver resolver = getContentResolver();
Cursor cursor = resolverquery(originalUri, proj, null, null, null);
// 按我个人理解 这个是获得用户选择的的索引值
int column_index = cursorgetColumnIndexOrThrow(MediaStoreImagesMediaDATA);
// 将光标移至开头 ,这个很重要,不小心很容易引起越界
cursormoveToFirst();
// 最后根据索引值获取路径
String path = cursorgetString(column_index);
这样就获得了的路径。
下面说上传,现在一般上传都用Ok>
以上就是关于求助c#网络编程 想要实现把一条图片的uri包含的图片下载到本地。。求大佬指路。。脑细胞已经在地府排队了全部的内容,包括:求助c#网络编程 想要实现把一条图片的uri包含的图片下载到本地。。求大佬指路。。脑细胞已经在地府排队了、如何通过Tesseract开源OCR引擎创建Android OCR应用、android4.4版本uri转换怎么调用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)