Android 实现将Bitmap 保存到本地

 更新时间:2020年03月20日 15:14:03   作者:GreatCoder726  
这篇文章主要介绍了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的操作就基本完成了。比较简单。

以上这篇Android 实现将Bitmap 保存到本地就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android自定义属性 format的深入解析

    Android自定义属性 format的深入解析

    以下是对Android中的自定义属性format进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-07-07
  • 利用Android实现光影流动特效的方法详解

    利用Android实现光影流动特效的方法详解

    Flutter 的画笔类 Paint 提供了很多图形绘制的配置属性,来供我们绘制更丰富多彩的图形。本篇我们引入一个 Paint 类新的属性:maskFilter,再结合之前的 shader 和动画,制作出光影流动特效,感兴趣的可以尝试一下
    2022-07-07
  • Android中切换到主线程执行的方法

    Android中切换到主线程执行的方法

    这篇文章主要介绍了Android中切换到主线程执行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Android布局之LinearLayout线性布局

    Android布局之LinearLayout线性布局

    LinearLayout是线性布局控件:要么横向排布,要么竖向排布,下面通过本篇文章给大家介绍Android布局之LinearLayout线性布局,涉及到android linearlayout 布局相关知识,对本文感兴趣的朋友一起学习吧
    2015-12-12
  • 清楚详解Android 进程间图传递图形buffer原理

    清楚详解Android 进程间图传递图形buffer原理

    这篇文章主要为大家清楚的详解了Android 进程间图传递图形buffer原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • android计算器简单实现代码

    android计算器简单实现代码

    这篇文章主要为大家详细介绍了android计算器的简单实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 浅扒Android动态设置字体大小的示例

    浅扒Android动态设置字体大小的示例

    本篇文章主要介绍了浅扒Android动态设置字体大小的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Android程序启动时出现黑屏问题的解决方法

    Android程序启动时出现黑屏问题的解决方法

    这篇文章主要介绍了Android程序启动时出现黑屏问题的解决方法,分析了黑屏出现的原因及相应的解决方法,需要的朋友可以参考下
    2016-08-08
  • Android移动端touch实现下拉刷新功能

    Android移动端touch实现下拉刷新功能

    这篇文章主要介绍了移动端touch实现下拉刷新功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Android UI设计与开发之ViewPager介绍和简单实现引导界面

    Android UI设计与开发之ViewPager介绍和简单实现引导界面

    这篇文章主要为大家详细介绍了Android UI设计与开发之ViewPager介绍和简单实现引导界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论