vue使用exif獲取圖片經(jīng)緯度的示例代碼
我上一篇文章寫了怎么壓縮圖片和旋轉(zhuǎn)。這篇寫一下怎么看圖片的經(jīng)緯度
注意?。?!
只有原圖有大量的元數(shù)據(jù)信息。通過拍照軟件如: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;
//去獲取拍照時(shí)的信息,解決拍出來的照片旋轉(zhuǎn)問題
self.EXIF.getData(file, function() {
Orientation = self.EXIF.getTag(this, 'Orientation');
});
// 看支持不支持FileReader
if (!file || !window.FileReader) return;
if (/^image/.test(file.type)) {
// 創(chuàng)建一個(gè)reader
let reader = new FileReader();
// 將圖片2將轉(zhuǎn)成 base64 格式
reader.readAsDataURL(file);
// 讀取成功后的回調(diào)
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('我進(jìn)來了', direction, Longitude, Latitude);
console.log('allMetaData', allMetaData);
//接口 axios
// });
}
}
};
</script>
這個(gè)功能是下載的exif.js文件,也可以通過npm安裝依賴。不過都要掛在到原型鏈上。
以上就是vue使用exif獲取圖片經(jīng)緯度的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于vue 獲取圖片經(jīng)緯度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue封裝一個(gè)簡(jiǎn)單輕量的上傳文件組件的示例
這篇文章主要介紹了Vue封裝一個(gè)簡(jiǎn)單輕量的上傳文件組件的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Vue+Echarts實(shí)現(xiàn)繪制多設(shè)備狀態(tài)甘特圖
這篇文章主要為大家詳細(xì)介紹了Vue如何結(jié)合Echarts實(shí)現(xiàn)繪制多設(shè)備狀態(tài)甘特圖,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
vue?require.context()的用法實(shí)例詳解
require.context是webpack提供的一個(gè)api,通常用于批量注冊(cè)組件,下面這篇文章主要給大家介紹了關(guān)于vue?require.context()用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
vue-photo-preview圖片預(yù)覽失效的問題及解決
這篇文章主要介紹了vue-photo-preview圖片預(yù)覽失效的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue3導(dǎo)入Elementplus時(shí)組件無法加載的情況及解決
這篇文章主要介紹了Vue3導(dǎo)入Elementplus時(shí)組件無法加載的情況及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2024-03-03
Vue+ElementUI創(chuàng)建一個(gè)帶有進(jìn)度顯示的文件下載和打包組件功能
如何使用 Vue 創(chuàng)建一個(gè)帶有進(jìn)度顯示和打包功能的文件下載組件,我們探討了如何導(dǎo)入必要的包,構(gòu)建組件的基礎(chǔ)結(jié)構(gòu),實(shí)現(xiàn)文件下載與進(jìn)度顯示,以及如何將文件打包為 ZIP 格式供用戶下載2024-08-08
淺談webpack編譯vue項(xiàng)目生成的代碼探索
本篇文章主要介紹了淺談webpack編譯vue項(xiàng)目生成的代碼探索,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12

