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安装依赖。不过都要挂在到原型链上。有问题请在评论区留言

  • 相关阅读:
    2dsphere索引
    geoNear查询 near查询的升级版
    geoWithin查询 多边形查询
    [TJOI2013]最长上升子序列
    「bzoj3956: Count」
    「bzoj3687: 简单题」
    「SDOI2008沙拉公主的困惑」
    郑州Day6
    「Luogu-U18201」分析矿洞
    【[COCI2011-2012#5] POPLOCAVANJE】
  • 原文地址:https://www.cnblogs.com/maruihua/p/12095063.html
Copyright © 2011-2022 走看看