<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Android中Bitmap、File與Uri之間的示例分析-創(chuàng)新互聯(lián)

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

            成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供印江網(wǎng)站建設(shè)、印江做網(wǎng)站、印江網(wǎng)站設(shè)計、印江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、印江企業(yè)網(wǎng)站模板建站服務(wù),十載印江做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

            簡介:

            Bitmap、File與Uri

            1、將一個文件路徑path轉(zhuǎn)換成File

            String path ;
            File file = new File(path)

            2、講一個Uri轉(zhuǎn)換成一個path

            以選擇一張圖片為例:

            String path = FileTools.getRealPathFromUri(content,uri);
            //自定義方法在下面
             public static String getRealPathFromUri(Context context, Uri uri) {
            
             if (null == uri) return null; //傳入的Uri為空,結(jié)束方法
            
             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(); //必須關(guān)閉
              }
             }
             
            //經(jīng)過上面轉(zhuǎn)換得到真實路徑之后,判斷一下這個路徑,如果還是為空的話,說明有可能文件存在于外置sd卡上,不是內(nèi)置sd卡.
             if (TextUtils.isEmpty(realPath)) {
              if (uri != null) {
              
              String uriString = uri.toString();
              int index = uriString.lastIndexOf("/"); //匹配 / 在一個路徑中最后出現(xiàn)位置
            
              String imageName = uriString.substring(index);
              //通過得到的最后一個位置,然后截取這個位置后面的字符串, 這樣就可以得到文件名字了 
            
              File storageDir;
            
              storageDir = Environment.getExternalStoragePublicDirectory(
               Environment.DIRECTORY_PICTURES); //查看外部儲存卡公共照片的文件
            
              File file = new File(storageDir, imageName);
              //自己創(chuàng)建成文件,
            
              if (file.exists()) {
               realPath = file.getAbsolutePath();
              } else {
            //  //那么存儲在了外置sd卡的應(yīng)用緩存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
             進行上面方法轉(zhuǎn)換完之后: /storage/emulated/0/com.appben.appche/browser-photos/1550297407488.jpg
             
            
             }

            3、File 轉(zhuǎn)換成path

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

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

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

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

            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());
            
            
            結(jié)果是:
            -----默認相對路徑:取得路徑不同------
            .\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());
            //得到的結(jié)果
            D:\workspace\test\..\src\test1.txt
            D:\workspace\src\test1.txt

            4、URI 與Uri的區(qū)別

            URI 是java.net的子類

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

            5、URI 轉(zhuǎn)換成 File

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

            6、File 轉(zhuǎn)換成URI

            URI uri = file.toURI();

            7、Path 轉(zhuǎn)換成Uri

            Uri uri = Uri.parse(path);

            8、圖片的Uri轉(zhuǎn)Bitmap

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

            9、File 轉(zhuǎn)到bitmap

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

            10、bitmap 轉(zhuǎn) file,可以理解為將bitmap進行保存.

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

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

            新聞標題:Android中Bitmap、File與Uri之間的示例分析-創(chuàng)新互聯(lián)
            網(wǎng)頁鏈接:http://www.jbt999.com/article22/dshdjc.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化電子商務(wù)、App設(shè)計建站公司

            廣告

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

            外貿(mào)網(wǎng)站建設(shè)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 91精品国产综合久久久不卡电影 | 中文字幕家庭乱伦 | 日韩成人av电影网站 | 台湾无码在线观看 | 超碰在线中文1159 |