欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 基于html5 canvas做批改作業的小插件

基于html5 canvas做批改作業的小插件

熱門標簽:機器人外呼系統存在哪些能力 電話機器人黑斑馬免費 高德地圖標注地點糾錯 電話機器人電銷系統掙話費 只辦理400電話 南昌仁和怎么申請開通400電話 平涼地圖標注位置怎么弄 如何獲取地圖標注客戶 拓展地圖標注

今天公司有一個新的需求,就是要在返回的作業照片里面可以涂鴉批改,批改完后就連同批改后的照片上傳到服務器。這對我不怎么熟悉canvas的人來說是個挑戰。

需求分析

  1. 能進行批改,就是相當于畫筆
  2. 能進行畫筆的撤回功能
  3. 能進行全部畫筆的清除功能
  4. 可以轉化畫筆的顏色

技術上的實現思路

  在聽到這需求后的第一反應就是用canvas來做,所以我在w3school閱讀了 canvas的API .

1.將圖片轉到canvas,用到API: drawImage()

2畫筆的實現

  • 當按下鼠標(mousedown)記錄開始點startX, startY
  • 當移動鼠標的時候(mousemove)就獲取當前的鼠標的坐標e.clientX, e.clientY,獲取到了當前的坐標后,與上一個點的坐標軸的左邊進行連線(lineTo ),這樣就能畫出了一條橫線了
  • 當鼠標松開左鍵(mouseup)時候,就清除mousemove的函數

3.清除功能:講原始的圖片再次用drawImage()函數來重置
4.撤回功能:在每次按下鼠標那時候,用getImageData()函數獲取當前的圖像記錄到數組里面,然后按撤回則使用putImageData()函數放在canvas
5.畫筆的顏色:在mousemove里面改變strokeStyle筆的顏色

代碼實現

移動鼠標畫出線條的代碼

let self = this;
    this.canvasNode = document.createElement('canvas');
    let styleString = this.utils.formatStyle(CANVAS_STYLE); // CANVAS_STYLE是canvas的樣式
    this.canvasNode.setAttribute('id','canvas');
    // 一定要設置這width 和 height
    let ratio = this.imgNode.width / this.imgNode.height, height = this.imgNode.height, width = this.imgNode.width;
    let tempWidth , tempHeight;
    // 按比例伸縮
    if(ratio >= window.innerWidth / window.innerHeight){
      if(width > window.innerWidth){
        tempWidth = window.innerWidth;
        tempHeight = height * window.innerWidth / width;
      } else {
        tempWidth = width;
        tempHeight = height;
      }
    }else{
      if(height > window.innerHeight){
        tempWidth = width * window.innerHeight / width;
        tempHeight = window.innerHeight;
      }else{
        tempWidth = width;
        tempHeight = height;
      }
    }
    this.canvasNode.height = tempHeight;
    this.canvasNode.width = tempWidth;
    styleString = Object.assign({'width': tempWidth, 'height': tempHeight}, CANVAS_STYLE);
    this.canvasNode.setAttribute('style', styleString);

    let ctx = this.canvasNode.getContext('2d'), startX = 0, startY = 0;
    let image = new Image() ;
    image.setAttribute("crossOrigin",'Anonymous')
    // 加時間戳因為這圖片的域名沒設置跨域https://www.jianshu.com/p/c3aa975923de
    image.src = this.imgNode.src + '?t=' + new Date().getTime(); 
    image.height = tempHeight;
    image.width = tempWidth;
    image.onload = function(){
      ctx.drawImage(image, 0, 0, tempWidth, tempHeight);
    }
    // 鼠標移動事件
    let mousemoveFn = function(e) {
      ctx.beginPath();
      ctx.lineWidth = 3;
      ctx.strokeStyle = self.currentColor;
      if(startX == e.clientX - self.canvasNode.offsetLeft || startY ===  e.clientY - self.canvasNode.offsetTop  ) return
      ctx.moveTo(startX,startY);
      ctx.lineTo(e.clientX - self.canvasNode.offsetLeft , e.clientY - self.canvasNode.offsetTop );
      ctx.stroke();
      startX = e.clientX - self.canvasNode.offsetLeft;
      startY = e.clientY - self.canvasNode.offsetTop ; // 37是header的高度
    }
    // 鼠標按下事件
    this.canvasNode.addEventListener("mousedown",function(e){
      startX = e.clientX - self.canvasNode.offsetLeft;
      startY = e.clientY - self.canvasNode.offsetTop ;

      // 如果在mouseup那里記錄 則在撤回時候要做多一個步驟
      let imageData = ctx.getImageData(0,0, self.canvasNode.width, self.canvasNode.height);
      self.imageDataArray.push(imageData); // 這imageDataArray用來記錄畫筆的筆畫
      self.canvasNode.addEventListener("mousemove", mousemoveFn, false);
    },false);
    this.canvasNode.addEventListener('mouseup', function(e){
      self.canvasNode.removeEventListener('mousemove', mousemoveFn);
    });
    this.bgNode.appendChild(this.canvasNode);

遇到的問題

1.圖片的跨域問題   因為這個域名只設置了192.168.6.*的跨域,所以我localhost的域名會報跨域的問題(只對192.168.6.*的跨域是同事告訴我的,不然我還在傻乎乎的查問題)

解決辦法:設置vue.congfig.js文件的dev下的host

2.圖片的按比例伸縮完按保存后圖片的尺寸變了   我用toDataURL()方法輸出的base64后的圖片尺寸變了。原因:在我把圖片draw上canvas上時候,用了上面代碼的圖片那比例伸縮的算法把圖片變小了,所以畫在canvas上的圖片也變小了...

解決辦法:(待解決)

總結

  • 第一次接觸canvas與圖片相結合的功能,讓我熟悉了canvas的api
  • 在遇到沒做過的功能之前,一定要先定下心來運用你所知道的知識思考下有沒可行的方法,找到了突破點就可以做了
  • 在你碰上不熟悉的知識時候,一定要先看api,我這canvas之前不怎么會的,之后我細看了幾遍的api,我就可以上手去做功能了,并且在w3school看到的例子讓我覺得canvas真的很強大

到此這篇關于基于html5 canvas做批改作業的小插件的文章就介紹到這了,更多相關canvas 批改作業插件內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:西藏 新疆 棗莊 遼源 漯河 池州 永州 青島

巨人網絡通訊聲明:本文標題《基于html5 canvas做批改作業的小插件》,本文關鍵詞  基于,html5,canvas,做,批改,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于html5 canvas做批改作業的小插件》相關的同類信息!
  • 本頁收集關于基于html5 canvas做批改作業的小插件的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    丁香婷婷综合色啪| 娇妻被老王脔到高潮失禁视频| 中文乱码字幕高清一区二区| 欧美成人精品1314www| 日本不卡视频在线| 久久精品女同亚洲女同13| 精品视频在线视频| 亚洲一区国产视频| 最新国产精品自拍| 宅男噜噜噜66一区二区66| 午夜激情久久久| yy6080午夜| 日韩欧美在线123| 久久99日本精品| 亚洲午夜精品久久久久久高潮| 日韩精品一区二区三区视频在线观看| 日韩电影在线免费看| 亚洲av无码国产精品久久| 精品对白一区国产伦| 国产精品一区二区在线看| 18精品爽国产三级网站| 国产清纯在线一区二区www| 国产成人啪免费观看软件| 91在线播放观看| 亚洲精品少妇30p| 麻豆av免费看| 日韩女优制服丝袜电影| 精品一区二区三区免费播放| 992在线观看| 亚洲色图第一区| 久久久久中文字幕亚洲精品| 在线成人高清不卡| 麻豆国产精品一区二区三区 | 黄色香蕉视频在线观看| 亚洲视频资源在线| 日韩精品人妻中文字幕有码| 欧美成人乱码一区二区三区| 国产麻豆精品theporn| 日本老熟俱乐部h0930| 亚洲最新视频在线播放| 波多野结衣福利| 欧美激情在线一区二区三区| 97超碰免费在线观看| 日韩欧美一区二区三区在线| 国产高清不卡二三区| 在线观看中文字幕不卡| 日韩专区一卡二卡| 国产午夜精品福利视频| 亚洲另类春色校园小说| avtt香蕉久久| 中日韩av电影| fc2成人免费视频| 国产天堂亚洲国产碰碰| www日本在线观看| 久久网站最新地址| 91日韩一区二区三区| 欧美成人女星排行榜| 成年人网站91| 欧美大胆一级视频| 成人国产精品免费观看视频| 91精品视频网| 成人一道本在线| 91精品国产一区二区三区| 国产成人啪午夜精品网站男同| 欧美日韩免费电影| 国产福利精品一区二区| 欧美巨大另类极品videosbest| 国产在线播放一区二区三区| 欧美在线不卡视频| 国内精品视频666| 欧美日韩视频在线观看一区二区三区| 激情图片小说一区| 欧美区视频在线观看| 国产高清一区日本| 欧美一区二区三区在线观看视频| 国产·精品毛片| 日韩精品中文字幕一区二区三区| 波多野结衣精品在线| 精品成人免费观看| 国产调教打屁股xxxx网站| 国产欧美日产一区| 免费中文字幕av| 亚洲美女一区二区三区| 欧美xxxx精品| 日韩av二区在线播放| 色播五月激情综合网| 国产麻豆9l精品三级站| 91精品国产综合久久精品图片| 成人免费视频视频在线观看免费| 欧美电影精品一区二区| 中文在线字幕观看| 综合电影一区二区三区| 美国美女黄色片| 日本系列欧美系列| 精品污污网站免费看| av亚洲精华国产精华精| 亚洲国产精品ⅴa在线观看| 亚洲熟妇一区二区三区| 亚洲大型综合色站| 欧美色爱综合网| 波多野结衣的一区二区三区| 国产三级一区二区| 中国女人特级毛片| 免费的国产精品| 91精品国产欧美一区二区| 精品人妻人人做人人爽夜夜爽| 亚洲欧美在线高清| 动漫性做爰视频| 粉嫩蜜臀av国产精品网站| 久久久精品tv| 国产视频不卡在线| 国产自产v一区二区三区c| 欧美xingq一区二区| 少妇大叫太粗太大爽一区二区| 首页综合国产亚洲丝袜| 欧美精三区欧美精三区| 久草视频福利在线| 亚洲成国产人片在线观看| 欧美午夜不卡视频| 91免费看`日韩一区二区| 亚洲男同性视频| 在线一区二区三区四区| 91丝袜国产在线播放| 自拍视频在线观看一区二区| 九九热最新地址| 不卡一卡二卡三乱码免费网站| 国产精品久久久久一区 | 中文字幕第69页| 国产精品主播直播| 国产欧美久久久精品影院| 午夜精品一区二区三级视频| 国产成人在线视频网址| 中文字幕va一区二区三区| 182在线观看视频| 成人晚上爱看视频| 亚洲女爱视频在线| 欧美理论电影在线| 91av在线免费| 久久se精品一区二区| 久久精品一区二区三区不卡牛牛 | 三级一区在线视频先锋| 日韩欧美综合在线| 在线不卡av电影| 国内精品久久久久影院薰衣草| 国产亚洲精品精华液| 国产一区二区播放| 欧美一级片在线免费观看| 日本人妖一区二区| 久久久久久免费毛片精品| 中文字幕av播放| 男人女人拔萝卜视频| 日韩成人午夜电影| 久久久久久久久岛国免费| 91狠狠综合久久久| 国产无套精品一区二区三区| 日韩精品免费视频人成| 久久亚洲一级片| 538精品在线观看| 成年人小视频在线观看| 麻豆国产91在线播放| 中文字幕av一区二区三区| 欧美在线观看一区二区| 在线视频 日韩| 国产伦精品一区二区三区免费 | www.99热| 白白色亚洲国产精品| 亚洲成av人片一区二区| 精品1区2区在线观看| 欧美色图亚洲视频| 亚洲成人av免费在线观看| 国产精品一区二区91| 亚洲精品免费在线| 日韩一卡二卡三卡国产欧美| 日韩亚洲欧美中文字幕| 免费黄视频在线观看| 狠狠色2019综合网| 亚洲制服丝袜av| 久久精品人人爽人人爽| 欧美伊人久久久久久久久影院| 波多野结衣福利| 99久久精品国产精品久久| 青娱乐精品视频在线| 日韩理论在线观看| 日韩美一区二区三区| 色视频成人在线观看免| 国产美女免费无遮挡| 99re热这里只有精品免费视频| 麻豆精品国产传媒mv男同| 亚洲精品你懂的| 国产亚洲精品免费| 91精品国产综合久久久蜜臀图片| 久久嫩草捆绑紧缚| 中文在线一区二区三区| 不卡av免费在线观看| 久久国产免费看| 一个色在线综合| 国产精品热久久久久夜色精品三区| 在线91免费看| 国产精品无码99re| 国产伦精品一区二区三区视频女|