类似图上的右下角日期,就是我们用程序动态画上去的,这个时间显示什么时间当然要根据我们自己的业务需求来定。

以我们的举列,我们的客户要求这个时间显示的是照片拍摄的日期。

这个分为两种情况

1.添加照片时候 用相机拍摄的图片,这个当然直接取当时的时间就可以了,具体代码如下:

 //拍照private void fromCarema(OnFilishedListener listener) {if (hasSdcard()) {String path = null;if ( tempFile ==null || !tempFile.exists()) {listener.onFilish(null);return;}path = tempFile.getAbsolutePath();if (TextUtils.isEmpty(path)) {listener.onFilish(null);return;}try {Bitmap bitmap = BitmapUtils.scaleBitmap(path);//+++++++++++++++++++画日期操作bitmap = BitmapUtils.drawDate2Bitmap(bitmap);File file = new File(path);if (file.exists()) {file.delete();}path = BitmapUtils.saveBitmap(bitmap);listener.onFilish(path);} catch (Exception e) {e.printStackTrace();Log.e("保存图片", "图片保存失败");listener.onFilish(null);}} else {if (fragment != null) {Toast.makeText(fragment.getActivity(), "未找到存储卡,无法存储照片!", Toast.LENGTH_SHORT).show();} else {Toast.makeText(activity, "未找到存储卡,无法存储照片!", Toast.LENGTH_SHORT).show();}listener.onFilish(null);}}
public static Bitmap drawDate2Bitmap(Bitmap bitmap) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);String date = sdf.format(new Date());Bitmap.Config bitmapConfig = bitmap.getConfig();// set default bitmap config if noneif (bitmapConfig == null) {bitmapConfig = Bitmap.Config.ARGB_8888;}bitmap = bitmap.copy(bitmapConfig, true); // 获取可改变的位图Canvas canvas = new Canvas(bitmap);Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);// text color - #3D3D3Dpaint.setColor(Color.RED);// text size in pixelspaint.setTextSize(30);// text shadow// paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);Rect bounds = new Rect();paint.getTextBounds(date, 0, date.length(), bounds);int x = (bitmap.getWidth() - bounds.width());canvas.drawText(date, x - 10, bitmap.getHeight() - 10, paint);canvas.save();return bitmap;}

2.如果是从图库选择的照片,我们需要先获取照片拍摄日期,然后再将日期画上去,代码如下:

//从图库选择private void fromGallery(Intent data, OnFilishedListener listener) {Uri uri = data.getData();String[] filePathColumn = {MediaStore.Images.Media.DATA , MediaStore.Images.Media.DATE_TAKEN};Cursor cursor = null;if (uri == null)return;if (uri.getScheme().contains("file")) {Long fileTime = (new File(uri.getPath())).lastModified();String dateTime = TimeUtil.longToDate1(fileTime);Log.i("wtt","照片拍摄日期为dateTime: " + dateTime);saveSelectPic( dateTime , uri.getPath(), listener);} else if (uri.getScheme().contains("content")) {if (fragment != null) {cursor = fragment.getActivity().getContentResolver().query(uri, filePathColumn, null, null, null);} else {cursor = activity.getContentResolver().query(uri,filePathColumn, null, null, null);}if (cursor.moveToFirst()) {int columnIndex = cursor.getColumnIndex(filePathColumn[0]);String picturePath = cursor.getString(columnIndex);int dateIndex = cursor.getColumnIndexOrThrow(filePathColumn[1]);String date = cursor.getString(dateIndex);if (TextUtils.isEmpty(date)) {date = TimeUtil.getStringDate1();}else{date = TimeUtil.longToDate1(Long.parseLong(date));}cursor.close();saveSelectPic(date , picturePath, listener);} else {listener.onFilish(null);}}}
 /*** 保存圖片** @param picPath* @param listener*/private void saveSelectPic(String date, String picPath, OnFilishedListener listener) {if (TextUtils.isEmpty(picPath)) {listener.onFilish(null);return;}Bitmap bitmap = BitmapUtils.scaleBitmap(picPath);bitmap = BitmapUtils.drawDate2Bitmap( date , bitmap);try {picPath = BitmapUtils.saveBitmap(bitmap);listener.onFilish(picPath);} catch (Exception e) {e.printStackTrace();Log.e("保存图片", "图片保存失败");listener.onFilish(null);}}
public static Bitmap drawDate2Bitmap(String date , Bitmap bitmap) {Bitmap.Config bitmapConfig = bitmap.getConfig();// set default bitmap config if noneif (bitmapConfig == null) {bitmapConfig = Bitmap.Config.ARGB_8888;}bitmap = bitmap.copy(bitmapConfig, true); // 获取可改变的位图Canvas canvas = new Canvas(bitmap);Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);// text color - #3D3D3Dpaint.setColor(Color.RED);// text size in pixelspaint.setTextSize(30);// text shadow// paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);Rect bounds = new Rect();paint.getTextBounds(date, 0, date.length(), bounds);int x = (bitmap.getWidth() - bounds.width());canvas.drawText(date, x - 10, bitmap.getHeight() - 10, paint);canvas.save();return bitmap;}

基本实现方式都在代码里面了,大家如果还有其他问题欢迎加入我的qq群讨论交流:开发一群:454430053 开发二群:537532956

Android 图片获取显示照片拍摄时间相关推荐

  1. android图片获取加载小结

    获取方式 1.内存 内存缓存主要使用LRU缓存算法,引用support-v4中的LruCache, 通过键值对的形式获取到相应的bitmap,配置如下: //初始化缓存策略int maxMem = ( ...

  2. android 图片拍照,Android获取图片拍照时间

    为什么写这篇文章是因为今早有个需求需要获取图片拍照时的时间进行一些处理,有些方法参数名忘记了,所以谷歌百度了一下,Android 图片 时间,Android 图片 拍照 时间,这几个关键字居然无法搜索 ...

  3. Android实例]------获取sd卡图片显示出来

    [Android实例] 获取sd卡图片显示出来 ON 六 02 2012 IN ANDROID代码仓库, ANDROID项目代码 BY ANDROID智能手机 | 评论 package com.fil ...

  4. android 从图片获取二维码

    之前的博客我记得讲过关于扫描二维码的内容,昨天,组长让我不仅可以扫描获取二维码,还可以通过图片获取里面的二维码.比如别人拍了一张二维码的照片,发送给你,app应该可以获取图片的二维码. 自己在网上查了 ...

  5. Unity调用android相册获取图片或视频

    Unity调用android相册获取图片或视频 (此文章对有unity基础和对环境配置有基础的童嚡容易看懂) 因为项目上用到,在百度了很多大佬的文章后,陆陆续续踩了很多坑,可能是我哪里设置的不对,大部 ...

  6. python 分析图片获取拍摄时间和拍摄地点

    最近发现的一个很简单,而且很有意思的一个项目,就是通过对手机拍摄照片的EXIF信息进行分析,可以获取到拍摄时间和拍摄时的GPS坐标.然后,通过地理逆编码,就可以把GPS对应的地点翻译出来. 有意思的用 ...

  7. Android图片压缩(质量压缩和尺寸压缩)

    在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩):质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手 ...

  8. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

  9. Android图片缓存框架Glide

    Android图片缓存框架Glide Glide是Google提供的一个组件.它具有获取.解码和展示视频剧照.图片.动画等功能.它提供了灵活的API,帮助开发者将Glide应用在几乎任何网络协议栈中. ...

最新文章

  1. 面试必问的分布式相关内容(未完待续)
  2. 常见的java异常——java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path...
  3. 【干货】常用的Linux 系统备份、恢复命令
  4. 什么是线程池,连接池,线程池和连接池之间的区别
  5. 品牌到底要不要做全渠道?且听他们怎么说……
  6. python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法
  7. MySql 主从模式原理及操作步骤
  8. MYSQL8.0 排序查询报错 this is incompatible with sql_mode=only_full_group_by
  9. 动态图制作软件设计(二)
  10. React Native RSA加密
  11. android 抽屉式滑动demo
  12. 数学画图软件_关于数学建模(或科研绘图)的画图学习建议
  13. 阿里云 银行卡 信息 四要素 验证
  14. html制作作业提交入口,最全的提交网站入口大全
  15. 思科服务器dns配置文件,cisco设置dns方法
  16. 什么是SFP光模块?
  17. java 安全策略_java.security.Security 支持的安全策略和算法
  18. java.sql.SQLException: 要执行的 SQL 语句不得为空白或空值
  19. 投影仪用光学引擎行业现状调研及趋势分析报告
  20. 二十四节气-春分。昼夜平分,日渐长~

热门文章

  1. PixelStreaming数据通信
  2. 如何找到Oracle 企业管理控制台
  3. ubuntu修改目录
  4. 韦尔奇、郭士纳、稻盛和夫有什么共同点
  5. android 百度地图 驾车路径的距离获取
  6. 《自然语言处理》第二次实验:机器翻译(Seq2Seq中英文翻译实验)
  7. ubuntu安装以及启动nginx
  8. 基于jsp java的汽车租赁租车行管理系统
  9. Linux线程JOINABLE与DETACHED的区别
  10. #pragma once和#ifndef指令总结