欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能exif.js實(shí)現(xiàn)圖片上傳功能-創(chuàng)新互聯(lián)

本文實(shí)例為大家分享了Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能的具體代碼,以及圖片上傳功能引用exif.js,供大家參考,具體內(nèi)容如下

目前成都創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、福清網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

可以在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;
  //去獲取拍照時(shí)的信息,解決拍出來(lái)的照片旋轉(zhuǎn)問(wèn)題
  Exif.getData(file, function(){
   Orientation = 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;
   //判斷圖片是否大于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 () {
  //這里寫(xiě)接口
  },
  rotateImg (img, direction,canvas) {
  //最小與大旋轉(zhuǎn)方向,圖片旋轉(zhuǎn)4次后回到原方向
  const min_step = 0;
  const max_step = 3;
  if (img == null)return;
  //img的高度和寬度不能在img元素隱藏后獲取,否則會(huì)出錯(cuò)
  let height = img.height;
  let width = img.width;
  let step = 2;
  if (step == null) {
   step = min_step;
  }
  if (direction == 'right') {
   step++;
   //旋轉(zhuǎn)到原位置,即超過(guò)大值
   step > max_step && (step = min_step);
  } else {
   step--;
   step < min_step && (step = max_step);
  }
  //旋轉(zhuǎn)角度以弧度值為參數(shù)
  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;
  //如果圖片大于四百萬(wàn)像素,計(jì)算壓縮比并將大小壓至400萬(wàn)以下
  let ratio;
  if ((ratio = width * height / 4000000) > 1) {
  console.log("大于400萬(wàn)像素")
  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萬(wàn)則使用瓦片繪制
  let count;
  if ((count = width * height / 1000000) > 1) {
  console.log("超過(guò)100W像素");
  count = ~~(Math.sqrt(count) + 1); //計(jì)算要分成多少塊瓦片
 //   計(jì)算每塊瓦片的寬和高
  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);
  }
  //修復(fù)ios上傳圖片的時(shí)候 被旋轉(zhuǎn)的問(wèn)題
  if(Orientation != "" && Orientation != 1){
  switch(Orientation){
   case 6://需要順時(shí)針(向左)90度旋轉(zhuǎn)
    this.rotateImg(img,'left',canvas);
    break;
   case 8://需要逆時(shí)針(向右)90度旋轉(zhuǎn)
    this.rotateImg(img,'right',canvas);
    break;
   case 3://需要180度旋轉(zhuǎn)
    this.rotateImg(img,'right',canvas);//轉(zhuǎn)兩次
    this.rotateImg(img,'right',canvas);
    break;
  }
  }
  //進(jìn)行最小壓縮
  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>

網(wǎng)站題目:Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能exif.js實(shí)現(xiàn)圖片上傳功能-創(chuàng)新互聯(lián)
URL標(biāo)題:http://aaarwkj.com/article18/dddhgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)Google、小程序開(kāi)發(fā)網(wǎng)站策劃、網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
国产精品欧美一区久久| 亚洲男人天堂在线观看| 四虎经典视频在线播放| 欧美国产一级二级三级| 最新亚洲av熟女播放| 亚洲成人大片免费在线观看| 亚洲一品道在线观看| 日韩欧美人妻中文字幕| 国产精品99久久久久久| 中文字幕精品一区二区三区精品 | 亚洲欧美日韩校园春色| 亚洲男人天堂在线观看| 四虎精品国产一区二区三区| 在线日韩观看免费av| 国产av不卡二区三区| 在线国产一区二区不卡| 日本人妻在线不卡视频| 91久久高清国语自产拍| 精品一区无遮挡免费网站| 亚洲精品一级黄色片| 久久亚洲天堂av丁香| 亚洲老熟女老妇老女人| 国产综合中文字幕不卡| 精品国产三级a在线观看网站| 久久精品色一情一乱一伦| 亚洲av日韩av在线不卡一区| 午夜精品国产日韩欧美在线 | 国产男女猛进猛出精品91| 高清欧美精品一区二区三区| 蜜臀av免费在线观看| 国产一区二区三区精品久久| 久久碰国产一区二区三区| 免费在线观看做性小视频| 日韩亚洲国产激情一区二区| 日韩美女av在线播放| 热久久这里只有精品视频| 伦理中文字幕一区二区| 人妻少妇精品视频二区| 热久久视频这里只有精品| 日韩精选视频在线播放| 久久精品视频就在久久|