zoukankan      html  css  js  c++  java
  • vue使用exif获取图片经纬度

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

    注意!!!

    只有原图有大量的元数据信息。通过拍照软件如: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安装依赖。不过都要挂在到原型链上。有问题请在评论区留言

  • 相关阅读:
    物联网数据卡系统源码——物联网的主要应用领域
    一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    memcached对key和value的限制 memcached的key最大长度和Value最大长度
    缓存技术PK:选择Memcached还是Redis?
    .Net开源框架列表
    项目管理工具Redmine各功能测试
    DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享
    ASP.NET Core 折腾笔记一
    发布:.NET开发人员必备的可视化调试工具(你值的拥有)
    开源发布:VS代码段快捷方式及可视化调试快速部署工具
  • 原文地址:https://www.cnblogs.com/maruihua/p/12095063.html
Copyright © 2011-2022 走看看