日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

android 本地图片uri格式不一致,Android本地相册图片URI转换绝对路径

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 本地图片uri格式不一致,Android本地相册图片URI转换绝对路径 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做畢設的時候遇到了這個問題,一直給我報錯java.io.notFound啥的啥的,不管怎么修改路徑都是報這個錯誤,今天終于解決了,記錄一下解決過程。

首先我們調用系統相冊。

Intent intent = new Intent(Intent.ACTION_PICK, null);

intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");

startActivityForResult(intent, 2);

protected void onActivityResult(int requestCode, int resultCode, Intent data){

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == 2) {

// 從相冊返回的數據

if (data != null) {

// 得到圖片的全路徑

Uri uri = data.getData();

imageView.setImageURI(uri);

ocrtest.ocrtest(uri);

}

}

如上即可調用相冊模塊進行選擇本機圖片,但是這樣選出來的路徑是URI,也就是資源統一標識符,并不是圖片的絕對路徑,我們需要做修改,這里把我的FileUtil類上傳,直接使用即可FileUtil類下載。

在FileUtil類中,getFileAbsolutePath函數是根據URI獲取絕對路徑,包含兩個參數context,uri。

第一個是上下文,第二個就是文件的uri。函數返回值時String類型的絕對路徑RealPath。

在新建類ORCtest中調用如下

其中mContext如下

Context mContext;

public OcrTest(Context context){

mContext = context;

}

此后就可以轉換為絕對路徑,之后在調用百度AI的官方文檔中的代碼即可。

String realpath = FileUtil.getFileAbsolutePath(mContext, uri);

Log.i("realpath", realpath);

byte[] imgData = FileUtil.readFileByBytes(realpath);

String imgStr = Base64Util.encode(imgData);

String imgParam = URLEncoder.encode(imgStr, "UTF-8");

String param = "image=" + imgParam;

// 注意這里僅為了簡化編碼每一次請求都去獲取access_token,線上環境access_token有過期時間, 客戶端可自行緩存,過期后重新獲取。

String result = HttpUtil.post(url, accesstoken, param);

System.out.println(result);

return result;

返回結果

需要注意的是,在Android6.0之后,則需要加入動態權限獲取,否則會報Permission denied錯誤。

權限獲取代碼如下

在AndroidManifest.xml文件中加入

在java代碼中加入此函數

private static final int REQUEST_EXTERNAL_STORAGE = 1;

private static String[] PERMISSIONS_STORAGE = {

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE };

/**

* Checks if the app has permission to write to device storage

*

* If the app does not has permission then the user will be prompted to

* grant permissions

*

* @param activity

*/

public static void verifyStoragePermissions(Activity activity) {

// Check if we have write permission

int permission = ActivityCompat.checkSelfPermission(activity,

Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (permission != PackageManager.PERMISSION_GRANTED) {

// We don't have permission so prompt the user

ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,

REQUEST_EXTERNAL_STORAGE);

}

}

總結

以上是生活随笔為你收集整理的android 本地图片uri格式不一致,Android本地相册图片URI转换绝对路径的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。