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-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
vue3获取当前路由地址
Feb 18 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 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
php strrpos()与strripos()函数
2013/08/31 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php自定文件保存session的方法
2014/12/10 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
Python中用Spark模块的使用教程
2015/04/13 Python
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python学生管理系统
2019/01/30 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
工厂厂长岗位职责
2013/11/08 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
爱耳日活动总结
2014/04/30 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书