求助c#网络编程 想要实现把一条图片的uri包含的图片下载到本地。。求大佬指路。。脑细胞已经在地府排队了

求助c#网络编程 想要实现把一条图片的uri包含的图片下载到本地。。求大佬指路。。脑细胞已经在地府排队了,第1张

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转换怎么调用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9520117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存