zoukankan      html  css  js  c++  java
  • 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的操作就基本完成了。比较简单。

  • 相关阅读:
    修改element ui默认样式
    MyUI是美亚柏科旗下新德汇出品的Web前端一站式项目工程框架。
    细谈 axios和ajax区别
    Window MySQL远程连接不上的解决
    为什么要前后端分离?各有什么优缺点?
    原生js
    node.js安装及环境配置之Windows篇
    IDEA 导入若依管理系统
     Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
    获取git仓库时更新类型update type 的选择
  • 原文地址:https://www.cnblogs.com/cao-1/p/12508456.html
Copyright © 2011-2022 走看看