中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Android中Bitmap、File與Uri之間的示例分析-創新互聯

這篇文章主要介紹了Android中Bitmap、File與Uri之間的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創新互聯公司專業為企業提供印江網站建設、印江做網站、印江網站設計、印江網站制作等企業網站建設、網頁設計與制作、印江企業網站模板建站服務,十載印江做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

簡介:

Bitmap、File與Uri

1、將一個文件路徑path轉換成File

String path ;
File file = new File(path)

2、講一個Uri轉換成一個path

以選擇一張圖片為例:

String path = FileTools.getRealPathFromUri(content,uri);
//自定義方法在下面
 public static String getRealPathFromUri(Context context, Uri uri) {

 if (null == uri) return null; //傳入的Uri為空,結束方法

 final String scheme = uri.getScheme(); //得到Uri的scheme

 String realPath = null;

 if (scheme == null)
  realPath = uri.getPath(); //如果scheme為空 
 else if (ContentResolver.SCHEME_FILE.equals(scheme)) {
  realPath = uri.getPath(); //如果得到的scheme以file開頭
 } else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
  //得到的scheme以content開頭
  Cursor cursor = context.getContentResolver().query(uri,
   new String[]{MediaStore.Images.ImageColumns.DATA},
   null, null, null);
  if (null != cursor) {
  if (cursor.moveToFirst()) {
   int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
   if (index > -1) {
   realPath = cursor.getString(index);
   }
  }
  cursor.close(); //必須關閉
  }
 }
 
//經過上面轉換得到真實路徑之后,判斷一下這個路徑,如果還是為空的話,說明有可能文件存在于外置sd卡上,不是內置sd卡.
 if (TextUtils.isEmpty(realPath)) {
  if (uri != null) {
  
  String uriString = uri.toString();
  int index = uriString.lastIndexOf("/"); //匹配 / 在一個路徑中最后出現位置

  String imageName = uriString.substring(index);
  //通過得到的最后一個位置,然后截取這個位置后面的字符串, 這樣就可以得到文件名字了 

  File storageDir;

  storageDir = Environment.getExternalStoragePublicDirectory(
   Environment.DIRECTORY_PICTURES); //查看外部儲存卡公共照片的文件

  File file = new File(storageDir, imageName);
  //自己創建成文件,

  if (file.exists()) {
   realPath = file.getAbsolutePath();
  } else {
//  //那么存儲在了外置sd卡的應用緩存file中
   storageDir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
   File file1 = new File(storageDir, imageName);
   realPath = file1.getAbsolutePath();
  }
  }
 }
 return realPath;

 

 比如我在android 8.0 上運行的時候
 選擇照片之后的Uri : content://media/external/images/media/568344
 進行上面方法轉換完之后: /storage/emulated/0/com.appben.appche/browser-photos/1550297407488.jpg
 

 }

3、File 轉換成path

String path = file.getPath();
將此抽象路徑名轉換為一個路徑名字符串。所得到的字符串使用默認名稱分隔符來分隔名稱序列中的名稱。

String path = file.getAbsolutePath();
如果此抽象路徑名已經是絕對路徑名,則返回該路徑名字符串,這與 getPath() 方法一樣。如果此抽象路徑名是空的抽象路徑名,則返回當前用戶目錄的路徑名字符串,
該目錄由系統屬性 user.dir 指定。否則,使用與系統有關的方式分析此路徑名。
在 UNIX 系統上,通過根據當前用戶目錄分析某一相對路徑名,可使該路徑名成為絕對路徑名。在 Microsoft Windows 系統上,
通過由路徑名指定的當前驅動器目錄(如果有)來分析某一相對路徑名,
可使該路徑名成為絕對路徑名;否則,可以根據當前用戶目錄來分析它。

getCanonicalPath
規范路徑名是絕對路徑名,并且是惟一的。規范路徑名的準確定義與系統有關。如有必要,此方法首先將路徑名轉換成絕對路徑名,
這與調用 getAbsolutePath() 方法的效果一樣,然后用與系統相關的方式將它映射到其惟一路徑名。
這通常涉及到從路徑名中移除多余的名稱(比如 "." 和 "..")、分析符號連接(對于 UNIX 平臺),以及
將驅動器名轉換成標準大小寫形式(對于 Microsoft Windows 平臺)。
表示現有文件或目錄的每個路徑名都有一個惟一的規范形式。表示非存在文件或目錄的每個路徑名也有一個惟一的規范形式
。非存在文件或目錄路徑名的規范形式可能不同于創建文件或目錄之后同一路徑名的規范形式。
同樣,現有文件或目錄路徑名的規范形式可能不同于刪除文件或目錄之后同一路徑名的規范形式。

下面是參看文章中提到的一個例子

https://blog.csdn.net/qq_39949109/article/details/80609472

File file = new File(".\\test1.txt");
File file = new File("D:\\workspace\\test\\test1.txt");
 System.out.println("-----默認相對路徑:取得路徑不同------");
 System.out.println(file1.getPath());
 System.out.println(file1.getAbsolutePath());
 System.out.println("-----默認絕對路徑:取得路徑相同------");
 System.out.println(file2.getPath());
 System.out.println(file2.getAbsolutePath());


結果是:
-----默認相對路徑:取得路徑不同------
.\test1.txt
D:\workspace\test\.\test1.txt
-----默認絕對路徑:取得路徑相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt


 File file = new File("..\\src\\test1.txt");
 System.out.println(file.getAbsolutePath());
 System.out.println(file.getCanonicalPath());
//得到的結果
D:\workspace\test\..\src\test1.txt
D:\workspace\src\test1.txt

4、URI 與Uri的區別

URI 是java.net的子類

Uri 是android.net的子類,Uri不能被實例化

5、URI 轉換成 File

File file = null;
try{
 file = new File(new URI(uri.toString()));
}catch(URISyntaxException e){
 e.printStackTrace();
}

6、File 轉換成URI

URI uri = file.toURI();

7、Path 轉換成Uri

Uri uri = Uri.parse(path);

8、圖片的Uri轉Bitmap

Bitmap bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri))

9、File 轉到bitmap

Bitmap bitmap = BitmapFactory.decodeFile(file.getPath); //這個file要是真實路徑創建的file

10、bitmap 轉 file,可以理解為將bitmap進行保存.

//自己創建想要保存的文件的文件對象
BuffferedOutPutStream bos = 
new BufferedOutputStream(new FileOutputStream(file));
bos.flush;
bos.close;

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Android中Bitmap、File與Uri之間的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!

新聞標題:Android中Bitmap、File與Uri之間的示例分析-創新互聯
網頁鏈接:http://m.2m8n56k.cn/article22/dshdjc.html

成都網站建設公司_創新互聯,為您提供云服務器、網站設計關鍵詞優化、電子商務、App設計、建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 日韩一区二区在线视频 | 深夜福利视频在线观看免费播放 | 精品一久久香蕉国产线看观 | 精品视频在线免费播放 | 亚洲一区区| 欧美亚洲在线观看 | 三级黄色在线 | 亚洲一区二区三区香蕉 | 欧美成人午夜片一一在线观看 | 97在线视频免费 | 日本亚洲欧美国产日韩ay高清 | 三级黄色免费网站 | 二级毛片在线播放 | 免费视频成人国产精品网站 | 欧美一级毛片在线一看 | 怡红院宜春院 | 国产视频在线免费观看 | 欧洲一级视频 | 亚洲在线高清 | 免费观看一级欧美在线视频 | 在线中文字幕日韩 | 一级特黄aa大片欧美网站 | 欧美在线一区二区三区不卡 | 欧美成年黄网站色视频 | 国产一级在线观看视频 | 自偷自偷自亚洲永久 | 精品国产视频在线观看 | 免费看片aⅴ免费大片 | 久草免费福利视频 | 手机在线免费毛片 | 久久五月女厕所一区二区 | 亚洲久久久久 | 大视频在线爱爱爱爱 | 亚洲综合久久久 | 美国毛片毛片全部免费 | 免费在线观看a级毛片 | 激情一区二区三区成人 | 国产一级久久久久久毛片 | 国产东北色老头老太性视频 | 一本一本久久a久久精品综合麻豆 | 国产成人无精品久久久 |