亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

canvas壓縮圖片以及卡片制作的方法示例

2024-08-26 00:21:11
字體:
來源:轉載
供稿:網友

在做一些活動頁的時候,經常會有一些需要上傳圖片的需求,并且還需要將圖片以及生成的文字以及貼圖生成一張卡可以供用戶可以長按保存。這個需求之前完成過一次,最近又遇上了,使用的都是canvas來實現(xiàn)的。干脆整理出一篇博客出來。如果有更好的實現(xiàn)方法,歡迎提出一起探討。

使用canvas壓縮圖片

在html中使用寫入input標簽,type為file時候,可以調出手機的相冊可供選擇照片,也可以支持攝像頭進行拍照功能。在這個場景下,就可能出現(xiàn)圖片的體積會更大,可能會超出后端所支持的最大范圍,從而導致上傳失敗。

<input id="file" type="file">

1.首先要先獲取到圖片文件

var eleFile = document.querySelector('#file');  var reader = new FileReader()  eleFile.addEventListener('change', function (event) {    file = event.target.files[0];    console.log(file)    // 選擇的文件是圖片    if (file.type.indexOf("image") == 0) {      reader.readAsDataURL(file);        }  });

2.這個時候就取到了圖片文件,就不得不了解一下js中FileReader對象的使用了

FileReader對象允許Web應用程序異步讀取存儲在用戶計算機上的文件(或原始數(shù)據緩沖區(qū))的內容

方法:

 

方法名 參數(shù) 描述
abort none 中斷讀取
readAsBinaryString file 二進制碼
readAsDataURL file 將文件讀取為 DataURL
readAsText file, [encoding] 將文件讀取為文本

 

  • readAsText:該方法有兩個參數(shù),其中第二個參數(shù)是文本的編碼方式,默認值為 UTF-8。這個方法非常容易理解,將文件以文本方式讀取,讀取的結果即是這個文本文件中的內容。
  • readAsBinaryString:該方法將文件讀取為二進制字符串,通常我們將它傳送到后端,后端可以通過這段字符串存儲文件。
  • readAsDataURL:這是例子程序中用到的方法,該方法將文件讀取為一段以 data: 開頭的字符串,這段字符串的實質就是 Data URL,Data URL是一種將小文件直接嵌入文檔的方案。這里的小文件通常是指圖像與 html 等格式的文件。(其中base64的方式就是由此來獲得的。。)

FileReader處理事件簡介

 

事件 描述
onabort 中斷時觸發(fā)
onerror onabort
onload 文件讀取成功完成時觸發(fā)
onloadend 讀取完成觸發(fā),無論成功或失敗
onloadstart 讀取開始時觸發(fā)
onprogress 讀取中

 

繼續(xù)上面的操作,在拿到圖片之后,需要將文件進行處理轉化,此時

var reader = new FileReader(); //將文件以Data URL形式讀入頁面   reader.readAsDataURL(file);   reader.onload=function(e) {     console.log(reader)  } 

現(xiàn)在取到了圖片也進行了轉化,現(xiàn)在可以進行壓縮了。

var eleFile = document.querySelector('#file');  var reader = new FileReader()  eleFile.addEventListener('change', function (event) {    file = event.target.files[0];    // console.log(file)    // 選擇的文件是圖片    if (file.type.indexOf("image") == 0) {      var reader = new FileReader();       //將文件以Data URL形式讀入頁面         reader.readAsDataURL(file);         reader.onload=function(e) {           // console.log(this.result)          var pre=document.getElementById("pre");           pre.setAttribute("src", this.result)          canvasDataURL(this.result, 100, 0.5)        }         }  })  /* [canvasDataURL    通過canvas進行壓縮]   * @params path  圖片的base64的格式   * @params targetWidth  壓縮后圖片的寬度     * @params quality 圖片質量  quality值越小,所繪制出的圖像越模糊   */  function canvasDataURL(path, targetWidth, quality) {    var img = new Image();    img.src = path    img.onload = function () {        // var that = this        // console.log(that)        // 默認按比例壓縮        var w = this.width        var h = this.height        scale = w / h;        w = targetWidth        h = targetWidth / scale        var quality = quality;  // 默認圖片質量為0.7        //生成canvas        var canvas = document.createElement('canvas');        var ctx = canvas.getContext('2d');        // 創(chuàng)建屬性節(jié)點        var anw = document.createAttribute("width");        anw.nodeValue = w;        var anh = document.createAttribute("height");        anh.nodeValue = h;        canvas.setAttributeNode(anw);        canvas.setAttributeNode(anh);        ctx.drawImage(this, 0, 0, w, h);        // quality值越小,所繪制出的圖像越模糊        var base64 = canvas.toDataURL('image/jpeg', quality);        var result=document.getElementById("result");         result.setAttribute("src", base64)    }  }

很簡單,這樣就可以得到壓縮后的圖片了,從以上的代碼可得知,原理在于canvas中的toDataURL方法可指定圖片壓縮后的格式及壓縮質量,把canvas信息壓縮并轉為base64編碼來實現(xiàn)壓縮。

使用canvas制作卡片

場景:把剛剛壓縮之后的圖片與另一張圖片相結合,可長按進行保存。

function drawCanvas (target) {    var canvas = document.querySelector('#myCanvas')    var ctx = canvas.getContext('2d')    // 是設備上物理像素和設備獨立像素(device-independent pixels (dips))的比例    var dp = window.devicePixelRatio || 1    var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1    var ratio = this.dp / this.backingStoreRatio    var oldWidth = canvas.width    var oldHeight = canvas.height    canvas.width = oldWidth * ratio    canvas.height = oldHeight * ratio    canvas.style.width = oldWidth + 'px'    canvas.style.height = oldHeight + 'px'    ctx.scale(ratio, ratio)    var headerImg = new Image()    var bgImg = new Image()    headerImg.src = target    bgImg.src = '../bg.png'    headerImg.onload = (e) => {      // 圖片的寬高比      var rate = headerImg.width / headerImg.height      console.log(rate)      bgImg.onload = (e) => {        ctx.drawImage(headerImg, 10, 30, 50, (50 / rate))        // 背景圖片        ctx.drawImage(bgImg, 0, 0, 150, 150)        ctx.fillText('厲害啊', 80, 70)        var resultImg = new Image()        resultImg.src = canvas.toDataURL('image/png', 1)        resultImg.style.width = '100%'        var cardImg=document.getElementById("cardImg");         cardImg.setAttribute("src", resultImg.src)      }    }

取到剛剛得到的圖片,在圖像裝載完畢時后將其畫到畫布上,也可以配上文字等等,最后也是把canvas的信息轉為base64編碼來進行實現(xiàn) 。可以通過代碼來進行實例的實踐

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
最近中文字幕无免费| 久久久久久久久久久福利| 麻豆成人久久精品二区三区小说| 亚洲国产精品无码观看久久| 久久国产一区二区| 一个人www视频在线免费观看| 国产精品美腿一区在线看| 黑人巨大精品欧美一区免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文| 日本精品专区| 国产人伦精品一区二区| 亚洲第五色综合网| xxx成人少妇69| 国偷自产av一区二区三区| 天堂网在线观看国产精品| 日韩精品欧美精品| 久久综合九色欧美综合狠狠| 亚洲一区电影777| 成人午夜激情av| 国产精品99久久不卡二区| 国产第100页| 成人午夜激情av| 国产无套粉嫩白浆内谢的出处| 在线视频国产三级| 伊人网在线免费| 亚洲精品天堂| 久久视频在线免费观看| 日本福利视频| 亚洲成人综合在线| 亚洲激情中文1区| 国产精品精品国产一区二区| 成年人网站在线观看免费| 在线视频一二区| 五月激情五月婷婷| 亚洲国产精品日韩| av在线网址导航| 久久频这里精品99香蕉| 久久综合伊人77777麻豆最新章节| 94色蜜桃网一区二区三区| 91精品国产毛片武则天| 黄网站免费久久| 欧美一区二区三区四区在线观看| 岛国在线视频网站| av网站无病毒在线| 天涯成人国产亚洲精品一区av| 曰本女人与公拘交酡| 日韩av一卡二卡| 成人美女在线观看| 中文字幕日韩欧美精品在线观看| av日韩免费电影| 欧美极品aaaaabbbbb| 精品亚洲永久免费| 牛人盗摄一区二区三区视频| 一区二区三区欧美日韩| 欧美日韩成人精品| 夜色激情一区二区| 欧美日韩另类字幕中文| 在线视频精品免费| 亚洲尤物av| 国产精品入口麻豆九色| 777色狠狠一区二区三区| 欧美国产日韩亚洲一区| 日本韩国精品一区二区| 成人免费午夜电影| 美女黄色片网站| 欧美专区日韩| 成人一二三四区| 毛片在线视频观看| 国产探花在线播放| xvideos国产精品| 欧美性猛交7777777| 精品久久对白| 久久激五月天综合精品| 99精品桃花视频在线观看| 亚洲网友自拍| 中文无码精品一区二区三区| 日韩专区在线观看| 99色精品视频| 91麻豆成人精品国产免费网站| 国产精品密蕾丝视频下载| 国产一区二三区| 性xxxxxxxxx18欧美| 国产真实乱对白精彩久久| 国产欧美视频在线| 国产一区二区三区四区hd| 性欧美videosex高清少妇| 秘密基地免费观看完整版中文| 国产极品粉嫩福利姬萌白酱| 无码精品a∨在线观看中文| 777精品视频| 永久免费在线看片视频| www.男人的天堂| 人妻va精品va欧美va| 99免费精品| 国产毛片精品久久| 久久www成人_看片免费不卡| 亚洲一区尤物| 午夜久久99| 蜜桃传媒视频麻豆一区| 精品久久久久中文慕人妻| 欧美大片免费久久精品三p| 狠狠色丁香久久婷婷综合丁香| 欧美另类精品xxxx孕妇| 久久精品91| 国产精品国产三级国产专区52| p色视频免费在线观看| 久久久性生活视频| 性欧美精品孕妇| 亚洲一级免费在线观看| 中文字幕第66页| 欧美日韩一区二区三| 亚洲成aⅴ人片久久青草影院| 不卡免费追剧大全电视剧网站| 奇米影视四色在观看线| 国产精品美女一区二区在线观看| 成人午夜免费视频| 亚洲精品小说| 欧美午夜精品理论片a级按摩| 亚洲精品91美女久久久久久久| 色网站在线播放| 国产精品自在线| 看黄色免费网站| 一区二区电影在线观看| 少妇高潮一区二区三区喷水| 综合中文字幕| 欧美精选视频在线观看| 狼人精品一区二区三区在线| 蜜桃视频在线观看91| 操碰免费视频| 久久亚洲黄色| 三区在线观看| 97人妻精品一区二区免费| 蜜臀精品一区二区| 色综合一区二区三区| 国产深夜精品| 性色88av老女人视频| 亚洲美女视频网| 夜夜嗨yeyeh| 欧美乱大交xxxxx| 成人av手机在线| 日韩福利片在线观看| 日韩一级片一区二区| 欧美亚洲免费在线一区| 亚洲精品日韩综合观看成人91| 久久99久久| 日韩成人免费在线观看| 国产免费亚洲高清| 麻豆精品一二三| 亚洲色图丝袜美腿| h网站在线看| 欧美日韩经典丝袜| 九色蝌蚪在线观看| www.91av| 色鬼7777久久| 欧美私人免费视频| 杨钰莹一级淫片aaaaaa播放| 凹凸av导航大全精品| 国产成人亚洲综合色影视| 成人免费观看男女羞羞视频| 日本特级黄色片| 日本v片在线高清不卡在线观看| 国产精品一码二码三码在线| 国产精品一区二区av白丝下载| 久久老司机精品视频| 狠狠色伊人亚洲综合网站l| 综合干狼人综合首页| 黄色美女网站在线观看| 久久久免费网站| 国产精品无码人妻一区二区在线| 91偷拍精品一区二区三区| h精品动漫在线观看| 被灌满精子的波多野结衣| 九色在线视频观看| 日韩午夜在线电影| 色婷婷综合在线观看| 91丨九色丨国产| 国产精品白丝av| 国产精品三级av| 欧美 日韩 国产 在线| 欧美挠脚心视频网站| 毛片基地一级大毛片| 日韩国产专区| 成人在线观看www| 国产精品综合一区二区三区| 欧美成人午夜剧场免费观看| 亚洲人成在线电影| 日韩在线观看免费高清| 国产三级av片| 婷婷在线免费视频| 自拍另类欧美| av网站免费在线看| 杨幂一区二区三区免费看视频| 国产成人自拍在线| 欧美日韩国产高清一区二区三区| 国产99久久久国产精品| 久久这里只有精品9| 久久大胆人体| 国语自产精品视频在线看抢先版结局| 国产亚洲午夜高清国产拍精品| 一色屋色费精品视频在线观看| 黄网站免费观看| 成人免费高清观看| 色琪琪综合男人的天堂aⅴ视频| 久久久亚洲国产美女国产盗摄| 国产精品美女毛片真酒店| 久久综合伊人77777| xfplay资源站色先锋在线观看| 免费国产a级片| 日本韩国欧美一区二区三区| 波多野结衣绝顶大高潮| 国产又粗又长又爽又黄的视频| 丰满人妻av一区二区三区| 亚洲专区在线视频| 午夜日韩激情| 国产一区二区黄| 日本人妻熟妇久久久久久| 日韩美女视频一区二区在线观看| www.久久久久.com| 777精品久无码人妻蜜桃| 欧美午夜精品理论片a级大开眼界| 精品久久久久久久久久久久久久久久| 精品国产老师黑色丝袜高跟鞋| 青青草国产精品视频| 亚洲精品爱爱久久| 欧美呦呦网站| 国产欧美成人xxx视频| 老司机精品导航| 性猛交╳xxx乱大交| 午夜免费福利在线观看| 亚洲精品一区二区三区四区| 精品产品国产在线不卡| 一卡二卡三卡日韩欧美| 中文字幕佐山爱一区二区免费| 欧美色图中文字幕| 91视视频在线观看入口直接观看www| 一区二区www| 国产三级一区| av片在线观看免费| 波多野结衣毛片| 久草视频手机在线| 欧美精品一线| 久久精品一区八戒影视| 91精品国产麻豆国产自产在线| |精品福利一区二区三区| 国产亚洲精aa在线看| 阿v视频在线| 亚洲怡红院av| 国产精品欧美三级在线观看| 婷婷久久免费视频| 国产精品久久天天影视| 久久国内精品视频| 日本强好片久久久久久aaa| 69精品丰满人妻无码视频a片| 5566先锋影音夜色资源站在线观看| 国产精品入口麻豆| 国内精品久久久久影院薰衣草| 亚洲最大的成人网| 一级爱爱免费视频| 欧美一级日本a级v片| 日韩成人中文字幕| 欧美freesex黑人又粗又大| 一区二区三区回区在观看免费视频| 国产91中文| 亚洲成人精品视频| 免费在线观看麻豆视频| 亚洲欧美自偷自拍| 日韩av影院在线观看| 亚洲理论电影网| 欧洲国产精品| 国产精彩视频一区二区| aa国产精品| 午夜精品久久久久久久久久久久久| 秋霞午夜剧场| 51精品国产黑色丝袜高跟鞋| 天堂影院在线| 国产精品一区二区久久久| 青娱乐在线免费视频| 96日本xxxxxⅹxxx17| 亚洲综合色婷婷在线观看| 免费网站www在线观看| 国偷自产av一区二区三区麻豆| 日本中文字幕中出在线| 成年人免费看的视频| 98视频在线噜噜噜国产| 欧美四级电影在线观看| 一本色道久久综合狠狠躁的推荐| 欧美老女人第四色| 最新亚洲国产精品| av片哪里在线观看| 日韩av第一页| 亚洲一区二区三区四区电影| 国产三级欧美三级| 在线亚洲日本| 午夜日韩福利| 91精品国产色综合久久不卡98| 成人蜜桃视频网站网址| 午夜精品福利视频网站| 国产精品无码一本二本三本色| 欧美色图国产精品| 在线免费av导航| 国产三级在线播放| www.5588.com毛片| 欧美亚洲愉拍一区二区| 天海翼一区二区三区四区在线观看| 国产成人香蕉在线视频fuz| 久久色视频免费观看| 日韩精品在线观看一区| 成人羞羞视频免费看看| 羞羞的视频网站| 日韩成人av网站| 欧美日韩在线不卡| 欧美日韩网站| 国产又大又黄的视频| www国产91| 国产在线精品一区二区三区不卡| 国产视频第一页| 亚洲成人自拍| 欧美激情在线观看视频| www.亚洲视频.com| 中文欧美日本在线资源| 中国日韩欧美久久久久久久久| 亚洲精品国产suv一区| h片免费观看| 一道本在线观看视频| 欧美三区免费完整视频在线观看| 国产精品永久免费视频| 在线一区二区日韩| 国产欧美日本一区二区三区|