最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue下canvas裁剪圖片實例講解

 更新時間:2020年04月16日 08:36:24   作者:搜戴斯  
在本篇文章里小編給大家整理了關(guān)于vue下canvas裁剪圖片實例講解內(nèi)容,需要的朋友們可以參考下。

由于時間關(guān)系 代碼沒有做整理大家有什么不懂得可以留言;

代碼的主題思路備注中都有 大家可以看看

我的博客中還有關(guān)于canvas繪制矩形的文章有需要的可以看一下;

HTML代碼:

第一行的canvas為裁剪后展示用;div中的canvas存放原有尺寸的圖片

<canvas id="canvasImg1" style=" position: absolute; margin: 2px 0 0 0"></canvas>
<div id="dymImgCanv1" style=" display:none;">
<canvas id="dymCurrImg1" :src="leftImg.carImgUrl" width="1920" height="1080"></canvas>
</div>

JS截取圖片方法

1裁剪方法傳參

oMark2['canvas1'] = 'canvasImg2'; // 展示結(jié)果canvas id
oMark2['canvas2'] = 'dymCurrImg2'; //畫布原始圖片canvas id
oMark2['ImgUrl'] = carImgUrl;
oMark2['offsetLeft'] = location[0];
oMark2['offsetTop'] = location[2];
oMark2['offsetWidth'] = location[1] - location[0];
oMark2['offsetHeight'] = location[3] - location[2];

2裁剪方法 (注意:下邊方法中關(guān)于構(gòu)建的畫布 canvas1,canvas3與兩個canvas標簽ID的命名是不對應(yīng)的,方便大家理解我把關(guān)系捋出來

canvas1 = oMark['canvas2'] = 'dymCurrImg2'

canvas3 = oMark['canvas1'] = 'canvasImg2'

TailoringImg(oMark) {
    // 設(shè)置三個canvas 分別為 canvas1 ,canvas2,canvas3
    //  每個canvas的作用 canvas1原始圖片畫布(頁面中隱藏);
    //  canvas2原圖和裁剪結(jié)果之間轉(zhuǎn)換;
    //  canvas3裁剪之后的結(jié)果展示(頁面中展示);
    let res2 = oMark['ImgUrl'];
    let that = this;
    return new Promise(function (resolve, reject) {
     //圖片剪切處理
     var canvas1 = document.getElementById(oMark['canvas2']);
     var canvas3 = document.getElementById(oMark['canvas1']);
     canvas1.height = 1080;
     canvas1.width = 1920;

     canvas3.height = 198;
     canvas3.width = 400;
     var cxt1 = canvas1.getContext("2d"); // getContext() 方法返回一個用于在畫布上繪圖的環(huán)境
     var img = new Image();
     img.crossOrigin = '';
     img.src = res2;
     var canvas2 = document.createElement("canvas"); // 創(chuàng)建虛擬畫布環(huán)境
     var cxt2 = canvas2.getContext("2d");

     img.onload = function () {
      // 計算圖片縮放比例
      var Rwidth = canvas1.width / img.width;
      var Rheight = canvas1.height / img.height;

      cxt1.drawImage(img, 0, 0, canvas1.width, canvas1.height); // --第一步-- 原圖繪制在畫布上 drawImage方法在畫布上繪制圖像、畫布或視頻。也能夠繪制圖像的某些部分,以及/或者增加或減少圖像的尺寸。
        // 計算縮放好后的尺寸
      var srcX = oMark.offsetLeft * Rwidth;
      var srcY = oMark.offsetTop * Rheight;
      var sWidth = oMark.offsetWidth * Rwidth;
      var sHeight = oMark.offsetHeight * Rheight;
      var dataImg = cxt1.getImageData(srcX, srcY, sWidth, sHeight); // --第二步-- getImageData() 復(fù)制原圖畫布上指定矩形的像素數(shù)據(jù)

      canvas2.width = sWidth;
      canvas2.height = sHeight;
      cxt2.putImageData(dataImg, 0, 0, 0, 0, canvas2.width, canvas2.height); // --第三步-- 通過 putImageData() 將原圖圖像數(shù)據(jù)放到canvas2畫布中
      var img2 = canvas2.toDataURL("image/png"); // --第四步-- toDataURL()將canvas2畫布保存為圖像

      var cxt3 = canvas3.getContext("2d"); // getContext() 方法返回一個用于在畫布上繪圖的環(huán)境
      var img3 = new Image(); // 創(chuàng)建圖像對象
      img3.crossOrigin = ''; // 圖像跨域設(shè)置
      img3.src = img2;    // 設(shè)置圖像地址
      img3.onload = function () { // onload內(nèi)可以獲取圖像信息
       cxt3.drawImage(img3, 0, 0, canvas3.width, canvas3.height) // --第五步-- 將canvas2畫布生成的圖像放在canvas3畫布中

      };
      resolve();
     }
    })
   },

到此這篇關(guān)于vue下canvas裁剪圖片實例講解的文章就介紹到這了,更多相關(guān)vue下canvas裁剪圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Vue項目中引入Echarts繪制K線圖的方法技巧

    在Vue項目中引入Echarts繪制K線圖的方法技巧

    在Vue項目開發(fā)中,數(shù)據(jù)可視化是一項重要的任務(wù),Echarts是一個由百度開源的數(shù)據(jù)可視化庫,提供了豐富的圖表類型和強大的交互功能,其中,K線圖常用于展示金融數(shù)據(jù)的走勢,本文將詳細介紹如何在Vue項目中引入Echarts并繪制K線圖,需要的朋友可以參考下
    2025-04-04
  • VUE中如何優(yōu)雅實現(xiàn)爺孫組件的數(shù)據(jù)通信

    VUE中如何優(yōu)雅實現(xiàn)爺孫組件的數(shù)據(jù)通信

    所謂祖孫組件,也就是3層嵌套的組件,下面這篇文章主要給大家介紹了關(guān)于VUE中如何優(yōu)雅實現(xiàn)爺孫組件的數(shù)據(jù)通信的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • vue項目每30秒刷新1次接口的實現(xiàn)方法

    vue項目每30秒刷新1次接口的實現(xiàn)方法

    在vue.js項目中,經(jīng)常需要對數(shù)據(jù)實時更新——每隔xx秒需要刷新一次接口——即需要用到定時器相關(guān)原理。這篇文章主要介紹了vue項目每30秒刷新1次接口的實現(xiàn)方法,需要的朋友可以參考下
    2018-12-12
  • 關(guān)于iview和elementUI組件樣式覆蓋無效問題及解決

    關(guān)于iview和elementUI組件樣式覆蓋無效問題及解決

    這篇文章主要介紹了關(guān)于iview和elementUI組件樣式覆蓋無效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 深入理解Vuex的作用

    深入理解Vuex的作用

    這篇文章主要介紹了深入理解Vuex的作用,對Vuex感興趣的同學(xué),可以參考下
    2021-05-05
  • 一文詳解Vue.js與TypeScript的生命周期

    一文詳解Vue.js與TypeScript的生命周期

    Vue與TypeScript的結(jié)合使得開發(fā)大型應(yīng)用變得更加容易和高效,本文將詳細探討Vue.js組件中TypeScript的應(yīng)用,特別是它的生命周期鉤子函數(shù),并通過豐富的示例,為你提供一個實戰(zhàn)指南,需要的朋友可以參考下
    2023-11-11
  • vue實現(xiàn)彈框遮罩點擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹

    vue實現(xiàn)彈框遮罩點擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹

    vue如何簡單的實現(xiàn)彈框,遮罩,點擊其他區(qū)域關(guān)閉彈框, 簡單的思路是以一個div作為遮罩,這篇文章給大家詳細介紹了vue實現(xiàn)彈框遮罩點擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹,感興趣的朋友一起看看吧
    2018-09-09
  • uni-app自定義導(dǎo)航欄按鈕|uniapp仿微信頂部導(dǎo)航條功能

    uni-app自定義導(dǎo)航欄按鈕|uniapp仿微信頂部導(dǎo)航條功能

    這篇文章主要介紹了uni-app自定義導(dǎo)航欄按鈕|uniapp仿微信頂部導(dǎo)航條,需要的朋友可以參考下
    2019-11-11
  • vue 實現(xiàn)把路由單獨分離出來

    vue 實現(xiàn)把路由單獨分離出來

    這篇文章主要介紹了vue 實現(xiàn)把路由單獨分離出來,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue封裝組件之上傳圖片組件

    vue封裝組件之上傳圖片組件

    這篇文章主要為大家詳細介紹了vue封裝組件之上傳圖片組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論

柏乡县| 太和县| 鹿泉市| 沂源县| 铜川市| 白玉县| 重庆市| 定日县| 都江堰市| 房产| 清苑县| 镇原县| 罗甸县| 华阴市| 东兴市| 商南县| 潮州市| 黄山市| 东乡县| 岢岚县| 高陵县| 井冈山市| 镇江市| 曲麻莱县| 福海县| 利川市| 济南市| 洛扎县| 泰顺县| 拉孜县| 高淳县| 黎平县| 吕梁市| 紫金县| 饶阳县| 万安县| 垫江县| 巩留县| 万全县| 黄冈市| 通江县|