全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android编程实现保存图片到系统图库的方法示例

本文实例讲述了Android编程实现保存图片到系统图库的方法。分享给大家供大家参考,具体如下:

最近有些用户反映保存图片之后在系统图库找不到保存的图片,遂决定彻底查看并解决下。

Adnroid中保存图片的方法可能有如下两种:

第一种是自己写方法,如下代码:

public static File saveImage(Bitmap bmp) {
  File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee");
  if (!appDir.exists()) {
    appDir.mkdir();
  }
  String fileName = System.currentTimeMillis() + ".jpg";
  File file = new File(appDir, fileName);
  try {
    FileOutputStream fos = new FileOutputStream(file);
    bmp.compress(CompressFormat.JPEG, 100, fos);
    fos.flush();
    fos.close();
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

以上代码便是将Bitmap保存图片到指定的路径/sdcard/Boohee/下,文件名以当前系统时间命名,但是这种方法保存的图片没有加入到系统图库中

第二种是调用系统提供的插入图库的方法:
复制代码 代码如下:MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "title", "description");

调用以上系统自带的方法会把bitmap对象保存到系统图库中,但是这种方法无法指定保存的路径和名称,上述方法的title、description参数只是插入数据库中的字段,真实的图片名称系统会自动分配。

看似上述第二种方法就是我们要用到的方法,但是可惜的调用上述第二种插入图库的方法图片并没有立刻显示在图库中,而我们需要立刻更新系统图库以便让用户可以立刻查看到这张图片。

更新系统图库的方法
复制代码 代码如下:sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

上面那条广播是扫描整个sd卡的广播,如果你sd卡里面东西很多会扫描很久,在扫描当中我们是不能访问sd卡,所以这样子用户体现很不好,所以下面我们还有如下的方法:
复制代码 代码如下:sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File("/sdcard/Boohee/image.jpg"))););
或者还有如下方法:

final MediaScannerConnection msc = new MediaScannerConnection(mContext, new MediaScannerConnectionClient() {
  public void onMediaScannerConnected() {
    msc.scanFile("/sdcard/Boohee/image.jpg", "image/jpeg");
  }
  public void onScanCompleted(String path, Uri uri) {
    Log.v(TAG, "scan completed");
    msc.disconnect();
  }
});

上面代码的图片路径不管是通过自己写方法还是系统插入图库的方法都可以很容易的获取到。

终极完美解决方案

那么到这里可能有人又会问了,如果我想把图片保存到指定的文件夹,同时又需要图片出现在图库里呢?答案是可以的,sdk还提供了这样一个方法:
复制代码 代码如下:MediaStore.Images.Media.insertImage(getContentResolver(), "image path", "title", "description");

上述方法的第二个参数是image path,这样的话就有思路了,首先自己写方法把图片指定到指定的文件夹,然后调用上述方法把刚保存的图片路径传入进去,最后通知图库更新。

所以写了一个方法,完整的代码如下:

public static void saveImageToGallery(Context context, Bitmap bmp) {
  // 首先保存图片
  File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee");
  if (!appDir.exists()) {
    appDir.mkdir();
  }
  String fileName = System.currentTimeMillis() + ".jpg";
  File file = new File(appDir, fileName);
  try {
    FileOutputStream fos = new FileOutputStream(file);
    bmp.compress(CompressFormat.JPEG, 100, fos);
    fos.flush();
    fos.close();
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
 }
  // 其次把文件插入到系统图库
  try {
    MediaStore.Images.Media.insertImage(context.getContentResolver(),
  file.getAbsolutePath(), fileName, null);
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  }
  // 最后通知图库更新
  context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));
}

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 保存图片  # 系统图库  # 基于Android实现保存图片到本地并可以在相册中显示出来  # Android实现保存图片到本地并在相册中显示  # Android开发实现保存图片到手机相册功能  # android创建数据库(SQLite)保存图片示例  # Android画图并保存图片的具体实现代码  # Android实现点击WebView界面中图片滑动浏览与保存图片功能  # Android WebView实现长按保存图片及长按识别二维码功能  # Android拍照保存在系统相册不显示的问题解决方法  # Android开发实现的保存图片到相册功能示例  # 卡里  # 第二种  # 进阶  # 如果你  # 这种方法  # 相关内容  # 就有  # 找不到  # 出现在  # 两种  # 很久  # 很容易  # 感兴趣  # 这张  # 第二个  # 给大家  # 要用  # 这样一个  # 写了  # 种方法 


相关文章: 宝塔建站助手安装配置与建站模板使用全流程解析  微课制作网站有哪些,微课网怎么进?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  音乐网站服务器如何优化API响应速度?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  建站之星如何实现五合一智能建站与营销推广?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  常州自助建站费用包含哪些项目?  建站之星北京办公室:智能建站系统与小程序生成方案解析  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何快速搭建高效服务器建站系统?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  建站之星安装需要哪些步骤及注意事项?  如何用PHP工具快速搭建高效网站?  营销式网站制作方案,销售哪个网站招聘效果最好?  湖北网站制作公司有哪些,湖北清能集团官网?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  已有域名和空间如何快速搭建网站?  招商网站制作流程,网站招商广告语?  网站制作网站,深圳做网站哪家比较好?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  网站企业制作流程,用什么语言做企业网站比较好?  如何快速搭建支持数据库操作的智能建站平台?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  寿县云建站:智能SEO优化与多行业模板快速上线指南  css网站制作参考文献有哪些,易聊怎么注册?  无锡营销型网站制作公司,无锡网选车牌流程?  教学论文网站制作软件有哪些,写论文用什么软件 ?  平台云上自主建站:模板化设计与智能工具打造高效网站  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  C#怎么创建控制台应用 C# Console App项目创建方法  购物网站制作公司有哪些,哪个购物网站比较好?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  为什么Go需要go mod文件_Go go mod文件作用说明  网页设计与网站制作内容,怎样注册网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何快速搭建高效WAP手机网站吸引移动用户?  已有域名如何免费搭建网站?  如何用已有域名快速搭建网站?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  Thinkphp 中 distinct 的用法解析  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  C++如何编写函数模板?(泛型编程入门)  如何选择美橙互联多站合一建站方案?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  开封网站制作公司,网络用语开封是什么意思?  如何快速上传建站程序避免常见错误? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。