vue使用exif获取图片经纬度的示例代码


Posted in Vue.js onDecember 11, 2020

我上一篇文章写了怎么压缩图片和旋转。这篇写一下怎么看图片的经纬度

注意!!!

只有原图有大量的元数据信息。通过拍照软件如:b612等,拍摄的照片是软件处理过的,所以一定要使用原图来擦查询

下面贴以下代码。

<template>
 <div>
  <input type="file" id="upload" accept="image" @change="upload" />
  <span>{{textData}}</span>
 </div>
</template>
<script>
export default {
 data() {
  return {
   picValue: {},
   headerImage: '',
   textData:''
  };
 },
 components: {},
 methods: {
  upload(e) {
   console.log(e);
   let files = e.target.files || e.dataTransfer.files;
   if (!files.length) return;
   this.picValue = files[0];
   this.imgPreview(this.picValue);
  },
  imgPreview(file) {
   let self = this;
   let Orientation;
   //去获取拍照时的信息,解决拍出来的照片旋转问题
   self.EXIF.getData(file, function() {
    Orientation = self.EXIF.getTag(this, 'Orientation');
   });
   // 看支持不支持FileReader
   if (!file || !window.FileReader) return;

   if (/^image/.test(file.type)) {
    // 创建一个reader
    let reader = new FileReader();
    // 将图片2将转成 base64 格式
    reader.readAsDataURL(file);
    // 读取成功后的回调
    reader.onloadend = function() {
     let result = this.result;
     let img = new Image();
     img.src = result;
     self.postImg(file);
    };
   }
  },
  postImg(val) {
   //这里写接口
   let self = this;
   // document.getElementById('upload')
   // this.EXIF.getData(val, function(r) {
   let r = this.EXIF.getAllTags(val);
   const allMetaData = r;
   let direction;
   if (allMetaData.GPSImgDirection) {
    const directionArry = allMetaData.GPSImgDirection; // 方位角
    direction = directionArry.numerator / directionArry.denominator;
   }
   let Longitude;
   if (allMetaData.GPSLongitude) {
    const LongitudeArry = allMetaData.GPSLongitude;
    const longLongitude =
     LongitudeArry[0].numerator / LongitudeArry[0].denominator +
     LongitudeArry[1].numerator / LongitudeArry[1].denominator / 60 +
     LongitudeArry[2].numerator / LongitudeArry[2].denominator / 3600;
    Longitude = longLongitude.toFixed(8);
   }
   let Latitude;
   if (allMetaData.GPSLatitude) {
    const LatitudeArry = allMetaData.GPSLatitude;
    const longLatitude =
     LatitudeArry[0].numerator / LatitudeArry[0].denominator +
     LatitudeArry[1].numerator / LatitudeArry[1].denominator / 60 +
     LatitudeArry[2].numerator / LatitudeArry[2].denominator / 3600;
    Latitude = longLatitude.toFixed(8);
   }
   self.textData = '我是Longitude' + Longitude + ' ====== '+"我是Latitude" + Latitude
   console.log('我进来了', direction, Longitude, Latitude);
   console.log('allMetaData', allMetaData);
   //接口 axios
   // });
  }
 }
};
</script>

这个功能是下载的exif.js文件,也可以通过npm安装依赖。不过都要挂在到原型链上。

以上就是vue使用exif获取图片经纬度的示例代码的详细内容,更多关于vue 获取图片经纬度的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue-video-player 断点续播的实现
Feb 01 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 #Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 #Vue.js
vuex页面刷新导致数据丢失的解决方案
Dec 10 #Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 #Vue.js
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 #Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 #Vue.js
vue中如何自定义右键菜单详解
Dec 08 #Vue.js
You might like
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
热点新闻滚动特效的js代码
2013/08/17 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
python实现飞机大战微信小游戏
2020/03/21 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
中文系师范生自荐信
2013/10/01 职场文书
日语专业毕业生求职信
2013/12/04 职场文书
会计求职自荐信
2014/06/20 职场文书
党课心得体会范文
2014/09/09 职场文书
慈善募捐倡议书
2015/04/27 职场文书
安全承诺书格式范本
2015/04/28 职场文书