99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

Vue2.0實現調用攝像頭進行拍照功能exif.js實現圖片上傳功能-創新互聯

本文實例為大家分享了Vue2.0實現調用攝像頭進行拍照功能的具體代碼,以及圖片上傳功能引用exif.js,供大家參考,具體內容如下

目前成都創新互聯已為成百上千的企業提供了網站建設、域名、虛擬主機、網站托管、服務器租用、企業網站設計、福清網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

可以在github 上下載demo鏈接

vue組件代碼

<template>
 <div>
 <div >
  <div class="show">
  <div class="picture" :></div>
  </div>
  <div >
  <input type="file" id="upload" accept="image/jpg" @change="upload">
  <label for="upload"></label>
  </div>
 </div>
 </div>
</template>

<script>
import {Exif} from './exif.js'

export default {
 data () {
 return {
  headerImage:'',picValue:''
 }
 },
 mounted () {
 },
 methods: {
 upload (e) {
  let files = e.target.files || e.dataTransfer.files;
  if (!files.length) return;
  this.picValue = files[0];
  this.imgPreview(this.picValue);
  console.log(this.picValue)
 },
 imgPreview (file) {
  let self = this;
  let Orientation;
  //去獲取拍照時的信息,解決拍出來的照片旋轉問題
  Exif.getData(file, function(){
   Orientation = 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;
   //判斷圖片是否大于100K,是就直接上傳,反之壓縮圖片
   if (this.result.length <= (100 * 1024)) {
    self.headerImage = this.result;
    self.postImg();
   }else {
    img.onload = function () {
    let data = self.compress(img,Orientation);
    self.headerImage = data;
    self.postImg();
    }
   }
   }
  }
  },
  postImg () {
  //這里寫接口
  },
  rotateImg (img, direction,canvas) {
  //最小與大旋轉方向,圖片旋轉4次后回到原方向
  const min_step = 0;
  const max_step = 3;
  if (img == null)return;
  //img的高度和寬度不能在img元素隱藏后獲取,否則會出錯
  let height = img.height;
  let width = img.width;
  let step = 2;
  if (step == null) {
   step = min_step;
  }
  if (direction == 'right') {
   step++;
   //旋轉到原位置,即超過大值
   step > max_step && (step = min_step);
  } else {
   step--;
   step < min_step && (step = max_step);
  }
  //旋轉角度以弧度值為參數
  let degree = step * 90 * Math.PI / 180;
  let ctx = canvas.getContext('2d');
  switch (step) {
   case 0:
    canvas.width = width;
    canvas.height = height;
    ctx.drawImage(img, 0, 0);
    break;
   case 1:
    canvas.width = height;
    canvas.height = width;
    ctx.rotate(degree);
    ctx.drawImage(img, 0, -height);
    break;
   case 2:
    canvas.width = width;
    canvas.height = height;
    ctx.rotate(degree);
    ctx.drawImage(img, -width, -height);
    break;
   case 3:
    canvas.width = height;
    canvas.height = width;
    ctx.rotate(degree);
    ctx.drawImage(img, -width, 0);
    break;
  }
 },
 compress(img,Orientation) {
  let canvas = document.createElement("canvas");
  let ctx = canvas.getContext('2d');
  //瓦片canvas
  let tCanvas = document.createElement("canvas");
  let tctx = tCanvas.getContext("2d");
  let initSize = img.src.length;
  let width = img.width;
  let height = img.height;
  //如果圖片大于四百萬像素,計算壓縮比并將大小壓至400萬以下
  let ratio;
  if ((ratio = width * height / 4000000) > 1) {
  console.log("大于400萬像素")
  ratio = Math.sqrt(ratio);
  width /= ratio;
  height /= ratio;
  } else {
  ratio = 1;
  }
  canvas.width = width;
  canvas.height = height;
 //  鋪底色
  ctx.fillStyle = "#fff";
  ctx.fillRect(0, 0, canvas.width, canvas.height);
  //如果圖片像素大于100萬則使用瓦片繪制
  let count;
  if ((count = width * height / 1000000) > 1) {
  console.log("超過100W像素");
  count = ~~(Math.sqrt(count) + 1); //計算要分成多少塊瓦片
 //   計算每塊瓦片的寬和高
  let nw = ~~(width / count);
  let nh = ~~(height / count);
  tCanvas.width = nw;
  tCanvas.height = nh;
  for (let i = 0; i < count; i++) {
   for (let j = 0; j < count; j++) {
   tctx.drawImage(img, i * nw * ratio, j * nh * ratio, nw * ratio, nh * ratio, 0, 0, nw, nh);
   ctx.drawImage(tCanvas, i * nw, j * nh, nw, nh);
   }
  }
  } else {
  ctx.drawImage(img, 0, 0, width, height);
  }
  //修復ios上傳圖片的時候 被旋轉的問題
  if(Orientation != "" && Orientation != 1){
  switch(Orientation){
   case 6://需要順時針(向左)90度旋轉
    this.rotateImg(img,'left',canvas);
    break;
   case 8://需要逆時針(向右)90度旋轉
    this.rotateImg(img,'right',canvas);
    break;
   case 3://需要180度旋轉
    this.rotateImg(img,'right',canvas);//轉兩次
    this.rotateImg(img,'right',canvas);
    break;
  }
  }
  //進行最小壓縮
  let ndata = canvas.toDataURL('image/jpeg', 0.1);
  console.log('壓縮前:' + initSize);
  console.log('壓縮后:' + ndata.length);
  console.log('壓縮率:' + ~~(100 * (initSize - ndata.length) / initSize) + "%");
  tCanvas.width = tCanvas.height = canvas.width = canvas.height = 0;
  return ndata;
 },
 }
}
</script>

<style>
*{
 margin: 0;
 padding: 0;
}
.show {
 width: 100px;
 height: 100px;
 overflow: hidden;
 position: relative;
 border-radius: 50%;
 border: 1px solid #d5d5d5;
}
.picture {
 width: 100%;
 height: 100%;
 overflow: hidden;
 background-position: center center;
 background-repeat: no-repeat;
 background-size: cover;
}
</style>

網站題目:Vue2.0實現調用攝像頭進行拍照功能exif.js實現圖片上傳功能-創新互聯
URL標題:http://www.yijiale78.com/article18/dddhgp.html

成都網站建設公司_創新互聯,為您提供品牌網站建設Google小程序開發網站策劃網站建設網站內鏈

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站制作