Android 將Bitmap 保存到本地


Overview

圖片是一個可以使你程序變得比較的美觀,所以我們會在我們的軟件中使用圖片。但是對於圖片的操作也是比較的復雜。今天,我們學習一下如是將我們的圖片保存到我們的本地。


開發環境

  • Android Studio 3.6
  • Android 11
  • Mac OS 10.15
  • 模擬機 Google Pixel3 API R

然后學習一下如何來完成我們的功能

按照國際管理,我們先來看一下我們的代碼:

/**
 * Bitmap 幫助類之一
 */
class BitmapUtils {

    /**
     * Save Bitmap
     *
     * @param name file name
     * @param bm   picture to save
     */
    static void saveBitmap(String name, Bitmap bm, Context mContext) {
        Log.d("Save Bitmap", "Ready to save picture");
        //指定我們想要存儲文件的地址
        String TargetPath = mContext.getFilesDir() + "/images/";
        Log.d("Save Bitmap", "Save Path=" + TargetPath);
        //判斷指定文件夾的路徑是否存在
        if (!FileUtils.fileIsExist(TargetPath)) {
            Log.d("Save Bitmap", "TargetPath isn't exist");
        } else {
            //如果指定文件夾創建成功,那么我們則需要進行圖片存儲操作
            File saveFile = new File(TargetPath, name);

            try {
                FileOutputStream saveImgOut = new FileOutputStream(saveFile);
                // compress - 壓縮的意思
                bm.compress(Bitmap.CompressFormat.JPEG, 80, saveImgOut);
                //存儲完成后需要清除相關的進程
                saveImgOut.flush();
                saveImgOut.close();
                Log.d("Save Bitmap", "The picture is save to your phone!");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

}

這樣我們的寫入方法就完成了,比較的簡單的。
首相,我們需要獲取我們的軟件的根目錄。我們可以使用Context.getFilesDir()來獲取到軟件的根目錄,並且我需要保存到我們的images文件下方。
這樣獲取了我么的存儲路徑然后我們的需要判斷是不是首次使用,或者是該目錄是否存在,然后我們看一下如何來判斷我們的文件存在方法。看一下源代碼:

class FileUtils {
    /**
     * 判斷指定目錄的文件夾是否存在,如果不存在則需要創建新的文件夾
     * @param fileName 指定目錄
     * @return 返回創建結果 TRUE or FALSE
     */
    static  boolean fileIsExist(String fileName)
    {
        //傳入指定的路徑,然后判斷路徑是否存在
        File file=new File(fileName);
        if (file.exists())
            return  true;
        else{
            //file.mkdirs() 創建文件夾的意思
            return file.mkdirs();
        }
    }
}

我們在這個方法中傳入指定的存儲路徑,然后判斷是否存在,如果存在我們需要創建我們的指定目錄,然后返回我們的創建結果。這樣我們的對目錄的操作就基本完成了。

完成對目錄的操作,我們在看下如何完成我們的存儲過程,我們需要創建一個FileOutputStream 來用於圖片的寫入,並且我們需要對圖片進行相對應的壓縮操作。
並且我們的在最后需要清除我們相關的方法,這樣我們的地Bitmap的操作就基本完成了。比較簡單。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM