婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > canvas壓縮圖片以及卡片制作的方法示例

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

熱門標(biāo)簽:ok電銷機(jī)器人 欣鼎電銷機(jī)器人 效果 電話機(jī)器人技術(shù) 地圖標(biāo)注軟件打印出來 智能電銷機(jī)器人被禁用了么 惡搞電話機(jī)器人 高德地圖標(biāo)注商戶怎么標(biāo) 如何查看地圖標(biāo)注 黃石ai電銷機(jī)器人呼叫中心

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

使用canvas壓縮圖片

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

<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應(yīng)用程序異步讀取存儲在用戶計算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容

方法:

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

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

FileReader處理事件簡介

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

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

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

現(xiàn)在取到了圖片也進(jìn)行了轉(zhuǎn)化,現(xiàn)在可以進(jì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進(jìn)行壓縮]
   * @params path  圖片的base64的格式
   * @params targetWidth  壓縮后圖片的寬度  
   * @params quality 圖片質(zhì)量  quality值越小,所繪制出的圖像越模糊
   */
  function canvasDataURL(path, targetWidth, quality) {
    var img = new Image();
    img.src = path
    img.onload = function () {
        // var that = this
        // console.log(that)
        // 默認(rèn)按比例壓縮
        var w = this.width
        var h = this.height
        scale = w / h;
        w = targetWidth
        h = targetWidth / scale
        var quality = quality;  // 默認(rèn)圖片質(zhì)量為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方法可指定圖片壓縮后的格式及壓縮質(zhì)量,把canvas信息壓縮并轉(zhuǎn)為base64編碼來實現(xiàn)壓縮。

使用canvas制作卡片

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

function drawCanvas (target) {
    var canvas = document.querySelector('#myCanvas')
    var ctx = canvas.getContext('2d')
    // 是設(shè)備上物理像素和設(shè)備獨立像素(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的信息轉(zhuǎn)為base64編碼來進(jìn)行實現(xiàn) 。可以通過代碼來進(jìn)行實例的實踐

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:赤峰 萍鄉(xiāng) 中山 金昌 阿壩 盤錦 綏化 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《canvas壓縮圖片以及卡片制作的方法示例》,本文關(guān)鍵詞  canvas,壓縮,圖片,以及,卡片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《canvas壓縮圖片以及卡片制作的方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于canvas壓縮圖片以及卡片制作的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    av动漫一区二区| 欧美精品亚洲一区二区在线播放| 日韩视频中午一区| 欧美亚洲综合久久| 欧美日韩一区二区三区在线| 99国产精品久久久久| 99国产精品久久久| 久久99久久99| 中文字幕中文在线不卡住| 国产精品久久久久久久久搜平片| 精品成人私密视频| 国产精品久线在线观看| 中文字幕一区二区视频| 一区二区中文视频| 亚洲成人精品一区| 国产一区二区视频在线播放| 不卡高清视频专区| 欧美无人高清视频在线观看| 欧美电影精品一区二区| 亚洲欧洲精品一区二区三区不卡| 亚洲欧洲av在线| 看片网站欧美日韩| 91电影在线观看| 久久久精品国产免大香伊| 亚洲综合精品久久| 99久久亚洲一区二区三区青草| 欧美日韩精品欧美日韩精品| 精品久久久久久亚洲综合网| 国产精品久久二区二区| 美女mm1313爽爽久久久蜜臀| 色94色欧美sute亚洲线路二| 日韩高清在线观看| 国产目拍亚洲精品99久久精品| 欧美日韩黄视频| 亚洲成人自拍偷拍| 不卡的av电影| 亚洲国产精品一区二区www| 欧美色图在线观看| 一区二区三区日韩欧美| 色欧美乱欧美15图片| 美女网站色91| 在线成人av影院| 最新国产精品久久精品| 日韩精品专区在线影院重磅| 久久日韩精品一区二区五区| 国产精品久久久久久久蜜臀| 国产精品网站一区| 国产ts人妖一区二区| 中文字幕一区二区三区视频| 成人午夜av影视| 亚洲天堂免费在线观看视频| 欧美国产激情一区二区三区蜜月| av动漫一区二区| 亚洲一区二区三区免费视频| 欧美精品一区二区三区很污很色的 | 久久99久国产精品黄毛片色诱| 国产视频一区二区在线| 欧美日韩五月天| 国产精品免费aⅴ片在线观看| 免费人成黄页网站在线一区二区| 99精品一区二区| 亚洲素人一区二区| 99视频超级精品| 亚洲素人一区二区| 99精品国产99久久久久久白柏| 91在线视频免费91| 依依成人精品视频| 91视视频在线观看入口直接观看www | 亚洲精品在线网站| 国产69精品一区二区亚洲孕妇| 精品入口麻豆88视频| 看片的网站亚洲| 欧美日韩三级视频| 日韩精品欧美成人高清一区二区| 在线免费观看一区| 一区二区三区在线免费视频| 欧美三级欧美一级| 天天综合日日夜夜精品| 欧美成人a视频| 亚洲欧美精品午睡沙发| 在线视频你懂得一区二区三区| 亚洲一区二区高清| 久久久久久久久久久电影| 欧美无人高清视频在线观看| 国产三级一区二区| 91精品国产手机| 国内成+人亚洲+欧美+综合在线 | 国产精品国产三级国产aⅴ中文| av一二三不卡影片| 美脚の诱脚舐め脚责91| 亚洲美女淫视频| 欧美一级高清片| 国产91精品一区二区| 玉米视频成人免费看| 亚洲精品国产a| 亚洲国产高清aⅴ视频| 欧美一卡2卡3卡4卡| 欧美伊人精品成人久久综合97| 亚洲在线一区二区三区| 欧美美女一区二区| 日韩精品欧美精品| 亚洲午夜激情网页| 婷婷综合另类小说色区| 日韩精品在线看片z| 日韩一区二区在线观看视频播放| 色综合色综合色综合色综合色综合| 亚洲电影你懂得| 男女激情视频一区| 亚洲精品大片www| 亚洲成人激情av| 日本最新不卡在线| 中文字幕国产精品一区二区| 亚洲第一激情av| 日本欧美肥老太交大片| 国产一区二区美女诱惑| 成人美女视频在线看| 97久久超碰精品国产| 欧美久久一二区| 国产欧美一区二区三区沐欲| 亚洲欧美偷拍三级| 国产成人亚洲综合a∨婷婷| 成人国产精品免费观看| 欧美日韩日日夜夜| 中文字幕欧美三区| 日本在线不卡一区| av电影在线不卡| wwwwww.欧美系列| 亚洲成人动漫在线免费观看| 青青草成人在线观看| 欧美日韩mp4| 欧美日韩dvd在线观看| 国产成人精品免费| 久久精品国产77777蜜臀| 风间由美一区二区三区在线观看| 色婷婷亚洲一区二区三区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91精品国产综合久久婷婷香蕉| 久久久国产午夜精品| 久久机这里只有精品| 666欧美在线视频| 玉足女爽爽91| 国产成人av电影免费在线观看| 欧美日韩精品一区二区三区四区 | 精品国产乱码久久久久久老虎| 亚洲同性同志一二三专区| 国产成人综合网| 日日摸夜夜添夜夜添国产精品| 91麻豆123| 一区二区欧美视频| 在线欧美小视频| 裸体健美xxxx欧美裸体表演| 精品国产制服丝袜高跟| zzijzzij亚洲日本少妇熟睡| 亚洲色图制服诱惑| 欧美另类一区二区三区| 国产三级一区二区| av不卡一区二区三区| 亚洲宅男天堂在线观看无病毒| 日韩欧美激情一区| 色噜噜狠狠色综合中国| 亚洲一区二区三区四区五区中文| 欧美猛男超大videosgay| 国产乱对白刺激视频不卡| 欧美一级淫片007| 51精品久久久久久久蜜臀| 成人免费福利片| 美国精品在线观看| 亚洲一区免费在线观看| 国产精品素人一区二区| 日韩美女视频在线| 欧美日韩中文字幕一区| 欧美色偷偷大香| 91麻豆精品国产自产在线观看一区 | 美女mm1313爽爽久久久蜜臀| 一区二区欧美精品| 国产精品久久久久久久久免费桃花 | 蜜桃av一区二区三区电影| 日韩美女久久久| 国产欧美日韩久久| 国产精品免费人成网站| 久久综合九色综合久久久精品综合| 色婷婷久久一区二区三区麻豆| 国产一区二区导航在线播放| 欧美成人一区二区三区片免费| 国产视频一区不卡| 国产精品国产三级国产三级人妇| 久久亚区不卡日本| 欧美韩日一区二区三区四区| 久久精品亚洲麻豆av一区二区| 欧美精品一区二区三区很污很色的| 日韩欧美成人一区| 欧美成人精精品一区二区频| 欧美本精品男人aⅴ天堂| 久久综合色综合88| 国产精品久久久久久亚洲毛片| 国产精品国产三级国产有无不卡 | 色综合久久66| 欧美日韩中文字幕一区二区| 91精品国产91久久久久久最新毛片 | 国产一区999|