保存图片到相册时时间显示1970年以及部分手机会保存两张问题

问题1:关于时间显示1970年的问题,参看博客Android 图片保存到相册时间显示为1970的问题,它通过一个自定义方法getRealPathFromURI()来获取绝对地址,更新图库来解决这个问题,是有效的,但是仍然没有解决图片重复的问题。
问题2:关于保存两张图片的问题,参看博客Android调用MediaStore.Images.Media.insertImage保存图片时生成两张图片的问题。通过几台机型测试发现,这个覆盖原生API的写法,既能解决问题2,同时解决了问题1,而且要简单很多。API插入方法:
MediaStore.Images.Media.insertImage(getContext().getContentResolver(),path_export, file_export.getName(), file_export.getName());

会在部分机型上自动生成一张缩略图,比如小米8(估计其他小米手机都有这个问题),于是深入inserImage源码:
在这里插入图片描述
发现保存图片的方法就是这个:

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, file_export.getAbsolutePath());
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = this.getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

而红框部分生成了缩略图,那么掉图中红框部分代码(生成缩略图功能)即可,以此来直接替换insertImage方法。

那出现1970年的原因是什么呢,参看博客
在这里插入图片描述

解决问题2中的方法应该是直接覆盖了那个图像内部的原始日期域DATE_TAKEN和DATE_ADDED。但是我并没有调用:
//将图片的拍摄时间设置为当前的时间
values.put(MediaStore.Images.ImageColumns.DATE_TAKEN, System.currentTimeMillis() )
values.put(MediaStore.Images.ImageColumns.DATE_ADDED, System.currentTimeMillis() )

也将时间正确改为了当前时间,这是为什么呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js是一个开源的前端JavaScript框架,用于构建现代化的Web应用程序。在Vue.js中,保存图片相册需要使用HTML5中的File API和Cordova插件。具体步骤如下: 1. 安装Cordova插件 使用Vue CLI创建Vue.js项目后,需要安装cordova插件,运行以下命令: ``` npm install --save cordova-plugin-file cordova-plugin-file-transfer cordova-plugin-camera ``` 2. 加载Cordova插件 安装好插件后,在Vue.js中加载cordova插件。在main.js中添加以下代码: ```javascript document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { console.log("Device ready, Cordova plugins loaded."); } ``` 3. 获取图片文件 使用HTML5中的File API选择用户想要保存的图片文件,并将其转换为base64编码。以下是代码示例: ```javascript // 获取图片文件 var file = this.$refs.imageInput.files[0]; // 将文件转换为base64编码 var reader = new FileReader(); reader.readAsDataURL(file); reader.onloadend = function () { var base64 = reader.result; } ``` 4. 保存图片相册 使用Cordova插件将base64编码的图片保存相册中。以下是代码示例: ```javascript // 保存图片相册 var filePath = "file:///storage/emulated/0/Download/image.jpg"; var fileTransfer = new FileTransfer(); fileTransfer.download( base64, filePath, function(entry) { console.log("Image saved: " + entry.toURL()); alert("Image saved successfully!"); }, function(error) { console.log("Image save error: " + error.code + ":" + error.source + ":" + error.target); alert("Image save error: " + error.code); } ); ``` 在以上代码示例中,base64是图像文件,filePath是要保存到的路径,fileTransfer.download()方法将base64编码的图像文件下载到filePath指定的位置,保存相册中。 综上所述,以上是Vue.js保存图片相册的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值