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 保存到本地就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • android实现手机截屏并保存截图功能

    本文实例为大家分享了android实现手机截屏并保存截图功能的具体代码,供大家参考,具体内容如下 一.准备一张图片 拷贝screenshot_panel.9.png放在目录drawable-xhdpi下 二.activity_main.xml 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

  • 解析Android开发优化之:对Bitmap的内存优化详解

    1) 要及时回收Bitmap的内存 Bitmap类有一个方法recycle(),从方法名可以看出意思是回收.这里就有疑问了,Android系统有自己的垃圾回收机制,可以不定期的回收掉不使用的内存空间,当然也包括Bitmap的空间.那为什么还需要这个方法呢? Bitmap类的构造方法都是私有的,所以开发者不能直接new出一个Bitmap对象,只能通过BitmapFactory类的各种静态方法来实例化一个Bitmap.仔细查看BitmapFactory的源代码可以看到,生成Bitmap对象最终都是通

  • Android开发实现保存图片到手机相册功能

    本文实例讲述了Android开发实现保存图片到手机相册功能.分享给大家供大家参考,具体如下: 有一种很常见的需求,当保存图片的时候,客户需要在相册里面看到那张图片.有时候确实是保存成功了(通过IO流将图片写入了SDCard),但打开相册却看不到那张图片,需要在文件管理软件上才能找到那张图片,在网上找了许多文章,貌似都保存不到相册那里,这应该就是手机品牌的原因,有的品牌的手机能显示在相册里,有的品牌的手机却不能.解决这种问题,最简单粗暴的方法是,用那台手机拍一张照片,然后找到它,查看它的路径详情,

  • Android 实现将Bitmap 保存到本地

    Overview 图片是一个可以使你程序变得比较的美观,所以我们会在我们的软件中使用图片.但是对于图片的操作也是比较的复杂.今天,我们学习一下如是将我们的图片保存到我们的本地. 开发环境 Android Studio 3.6 Android 11 Mac OS 10.15 模拟机 Google Pixel3 API R 然后学习一下如何来完成我们的功能 按照国际惯例,我们先来看一下我们的代码: /** * Bitmap 帮助类之一 */ class BitmapUtils { /** * Sav

  • Android实现调用系统图库与相机设置头像并保存在本地及服务器

    废话不多说了,直接给大家贴代码了,具体代码如下所述: /** * 1.实现原理:用户打开相册或相机选择相片后,相片经过压缩并设置在控件上,图片在本地sd卡存一份(如果有的话,没有则内部存储,所以还 * 需要判断用户是否挂载了sd卡),然后在服务器上存储一份该图片,当下次再次启动应用时,会默认去sd卡加载该图片,如果本地没有,再会去联网请求 * 2.使用了picasso框架以及自定义BitmapUtils工具类 * 3.记得加上相关权限 * <uses-permission android:nam

  • Android长按imageview把图片保存到本地的实例代码

    工具类 之前用 AsyncTask 现在改用rxJava public class SaveImageUtils { public static void imageSave(final ImageView imageView, final int id) { Observable .create(new Observable.OnSubscribe<ImageView>() { @Override public void call(Subscriber<? super ImageVie

  • Android实现将View转化为图片并保存到本地

    本文实例为大家分享了Android将View转化为图片并保存到本地的具体代码,供大家参考,具体内容如下 一.概述 app中有需求需要将View转化为图片并保存到本地,这里分两种情况: 1.View本身已经显示在界面上2.View还没有添加到界面上或者没有显示(绘制)过 二.实现方法 对于上述的第一种情况我使用下面代码即可: private void viewSaveToImage(View view) {         view.setDrawingCacheEnabled(true);  

  • Android实现EditText内容保存为Bitmap的方法

    本文实例讲述了Android实现EditText内容保存为Bitmap的方法.分享给大家供大家参考,具体如下: 主要代码如下: private void saveEidtTextAsBitmap() { if(mEditText == null) return; mEditText.setDrawingCacheEnabled(true); Bitmap bitmap = mEditText.getDrawingCache(); if(bitmap != null) { saveBitmap(b

  • Android把Bitmap保存为PNG图像文件的简单代码

    下面一段简单的代码给大家介绍了Android把Bitmap保存为PNG图像文件的方法,具体代码如下所示: public static void saveBitmapAsPng(Bitmap bmp,File f) { try { FileOutputStream out = new FileOutputStream(f); bmp.compress(Bitmap.CompressFormat.PNG, 100, out); out.flush(); out.close(); } catch (F

  • Android实现将View保存成Bitmap的方法

    本文实例讲述了Android实现将View保存成Bitmap的方法.分享给大家供大家参考,具体如下: 1. public Bitmap convertViewToBitmap(View view){ Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); //利用bitmap生成画布 Canvas canvas = new Canvas(bitmap); //

  • android中Glide实现加载图片保存至本地并加载回调监听

    Glide 加载图片使用到的两个记录 Glide 加载图片保存至本地指定路径 /** * Glide 加载图片保存到本地 * * imgUrl 图片地址 * imgName 图片名称 */ Glide.with(context).load(imgUrl).asBitmap().toBytes().into(new SimpleTarget<byte[]>() { @Override public void onResourceReady(byte[] bytes, GlideAnimation

  • Android用RecyclerView实现动态添加本地图片

    本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下: 本文所用的多图选择的library来自:https://github.com/lovetuzitong/MultiImageSelector 简单介绍一下用法: 1.跳转到图片选择页面: Intent intent = new Intent(PassengerSetActivity.this, MultiImageSelectorActivity.class); intent.putExtra(Mul

  • Android中把bitmap存成BMP格式图片的方法

    最近的项目,做图片的另存为功能,需要把图片存成jpg,png,bmp.对于jpg和png来说相对简单,android提供了bitmap.compress()方法可以马上解决.但是对于BMP这种格式,没有很好的支持.我花了几天时间在网上找了很久,都没有找到有用的答案,同样也发了疑问,没有合适的解答. package com.test.bitmap; import java.io.FileNotFoundException; import java.io.FileOutputStream; impo

随机推荐