成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 關(guān)于canvas.toDataURL 在iOS運行失敗的問題解決

關(guān)于canvas.toDataURL 在iOS運行失敗的問題解決

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

最近做了一個海報生成的組件,需要drawimage到畫布上,image來源包括本地和異地的圖片src;
首先講一點,異地圖片如果不設(shè)置允許跨域訪問,canvas.toDataURL是無法畫image的,報畫布污染的錯;首先放一張我要生成的圖;

上面加載了兩張本地圖片,兩張異地圖片,寫了一些文字;在windows谷歌瀏覽器跑是好的,是吧,圖片畫出來,感覺無壓力;用安卓也是好的,很開心;可是到IOS手機上,我去,怎么圖片顯示不出來啊,然后
try catch 錯誤,沒啥有用的信息;

try {
 // 將canvas對象轉(zhuǎn)化為image/png
   var dataUrl = canvas.toDataURL('image/png')
 } catch (err) {
   console.log(err)
 }

我擦,這怎么辦???
然后去cnbing搜,好多相同問題,好多原因,有個老外說動態(tài)更改canvas寬高無法再ios畫出圖片;還有的人說:
圖片文件 size 太大,是否圖片超過了 3M ? -----------我看了下生成的圖片才幾百kb PASS

圖片的 dimension 太大,是否圖片尺寸超過了 1000 x 1000 像素?我的尺寸確實超過了,寬高都超了,然而測試了下小的寬高,照舊ios畫不出來啊~~~PASS

你指定的 mime_type 不支持,你用的是哪個 mime type?—canvas的 toDataURL API我看過了,可以支持三個類型,各試了一遍,無果 PASS
先上我的代碼:

<template>
    <div id="Poster">
        <div class="mask" @click="hidePoster()"></div>
        <canvas ref="canvas" width="588" height="1044" style="display:none;"></canvas>
        <div ref="box" id="Poster-box" @click.stop>
          <span class="close"  @click="hidePoster()"></span>
        </div>
        <p class="tip">長安按海報發(fā)送給朋友</p>
    </div>
</template>
<script>
export default {
  data () { // 參數(shù)
    const u = navigator.userAgent // ios終端
    const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios終端
    return { // 返回參數(shù)
      localUrl: isIOS ? location.href.split('#')[0] : location.href, // 當前路徑
      canvas: Object // canvas對象
    }
  },
  mounted () {
    this.initCanvas()
  },
  methods: {
    /**
     * 隱藏海報
     */
    hidePoster () {
      this.$emit('hide')
    },
    /**
     * 加載圖片
     * @param {Object} img 圖片地址
     * @return {Promise} img dom
     */
    loadImage (img) {
      return new Promise((resolve, reject) => {
        // image dom 對象
        const $image = document.createElement('img')
        if (img.isCross_domain) {
          console.log(img.url)
          $image.setAttribute('crossOrigin', 'Anonymous')
        }
        $image.onload = () => {
          resolve($image)
        }
         $image.src = img.url
        $image.onerror = reject
      })
    },
    /**
     * init初始化canvas函數(shù)
     */
    async initCanvas () {
      // 獲取vue實例
      var vm = this
      vm.$indicator.open({
        text: '加載中...',
        spinnerType: 'fading-circle'
      })
      this.canvas = this.$refs.canvas.getContext('2d')
      this.canvas.height = 400
      this.canvas.width = 300
      this.canvas.fillStyle = '#ffffff'
      this.canvas.fillRect(0, 0, 588, 1044)

      // image urls
      const imgArr = [
        {
          url: require('../assets/poster-banner.png'),
          isCross_domain: false
        },
        {
          url: require('../assets/shadow.png'),
          isCross_domain: false
        },
        {
          url: 'https://s3-011-shinho-syj-uat-bjs.s3.cn-north-1.amazonaws.com.cn/mall/2019_06/border04.png',
          isCross_domain: true
        },
        {
          url: 'https://s3-011-shinho-syj-uat-bjs.s3.cn-north-1.amazonaws.com.cn/mall/2019_06/132.jpg',
          isCross_domain: true
        }
      ]
      // image doms
      await Promise.all(imgArr.map(img => this.loadImage(img))).then((imgs) => {
        console.log('done')
        this.canvas.drawImage(imgs[0], 0, 0, 588, 216 * 2)
        this.canvas.drawImage(imgs[1], 97 * 2, 166 * 2, 100 * 2, 100 * 2)

        this.canvas.save()
        this.canvas.beginPath()
        this.canvas.arc(147 * 2, 214 * 2, 34 * 2, 0, 2 * Math.PI, false)
        this.canvas.clip()
        this.canvas.drawImage(imgs[2], 113 * 2, 180 * 2, 68 * 2, 68 * 2)
        this.canvas.restore()
        this.canvas.drawImage(imgs[3], 189 * 2, 409 * 2, 88 * 2, 88 * 2)
        // 繪制文字
        this.drawText('我就是個我就賬號賬號', 147 * 2, 278 * 2, 290 * 2, '#333333', '32px PingFangSC-Regular ')
        this.drawText('榮譽稱號是我', 147 * 2, 300 * 2, 290 * 2, '#999999', '26px PingFangSC-Regular ')
        this.drawText('距離沖榜還差10人', 147 * 2, 340 * 2, 290 * 2, '#FA6F5B', 'bold 36px arial')
        this.drawText('快來助我沖榜贏紅燒醬油吧', 147 * 2, 370 * 2, 290 * 2, '#FA6F5B', 'bold 36px arial ')
        this.drawText('掃描二維碼', 180 * 2, 443 * 2, 172 * 2, '#333333', '28px PingFangSC-Regular ', 'right')
        this.drawText('直達沖榜活動', 180 * 2, 463 * 2, 172 * 2, '#333333', '28px PingFangSC-Regular ', 'right')
        this.drawText('邀請好友跟你一起沖大獎', 180 * 2, 483 * 2, 172 * 2, '#333333', '28px PingFangSC-Regular ', 'right')
        this.showPic()
        vm.$indicator.close()
      })
    },
    /**
     * 繪制文字
     * @param {String} title  文字名稱
     * @param {Number} x  x軸坐標
     * @param {Number} y  y軸坐標
     * @param {Number} maxwidth  最大寬度
     * @param {String} color  顏色
     * @param {String} font  字體樣式
     * @param {String} textalign  文字排版
     */
    drawText (title, x, y, maxwidth, color, font, textalign = 'center') {
      this.canvas.font = font
      this.canvas.textAlign = textalign
      this.canvas.fillStyle = color
      this.canvas.fillText(title, x, y, maxwidth)
    },
    /**
     * 顯示圖片
     */
    showPic () {
      // 獲取canvas對象
      let canvas = this.$refs.canvas

      try {
        // 將canvas對象轉(zhuǎn)化為image/png
        var dataUrl = canvas.toDataURL('image/png')
      } catch (err) {
        console.log(err)
      }

      // 創(chuàng)建img 元素
      var newImg = document.createElement('img')
      newImg.src = dataUrl
      newImg.style.width = '100%'
      newImg.style.height = '100%'
      newImg.className = 'img-poster'
      newImg.style.borderRadius = '8px'
      this.$refs.box.appendChild(newImg)
    }

  }
}
</script>

盤查了好久,最后找到bug,就是下面這個function

 /**
     * 加載圖片
     * @param {Object} img 圖片地址
     * @return {Promise} img dom
     */
    loadImage (img) {
      return new Promise((resolve, reject) => {
        // image dom 對象
        const $image = document.createElement('img')
        $image.src = img.url
        if (img.isCross_domain) {
          console.log(img.url)
          $image.setAttribute('crossOrigin', 'Anonymous')
        }
        $image.onload = () => {
          resolve($image)
        }
        $image.onerror = reject
      })
    },

有沒有注意到crossOrigin屬性是在src屬性之后賦值的;/(ㄒoㄒ)/~~
crossOrigin屬性必須在src屬性之前賦值
crossOrigin屬性必須在src屬性之前賦值
crossOrigin屬性必須在src屬性之前賦值
盡管沒有找到準確的文檔明確指定crossOrigin屬性必須在src屬性之前賦值,但是要適配IOS確實要這么做;
大家如果對 crossorigin 有疑問可以看一下MDN對crossorigin的解釋:
https://developer.mozilla.org/zh-CN/docs/Web/HTML/CORS_enabled_image

里面講了畫布的污染和解決方法,就是設(shè)置 crossorigin = “Anonymous”;里面的方法也是先設(shè)置crossorigin在圖片加載完后設(shè)置 src;
如下

var img = new Image,
    canvas = document.createElement("canvas"),
    ctx = canvas.getContext("2d"),
    src = "http://example.com/image"; // insert image url here

img.crossOrigin = "Anonymous";

img.onload = function() {
    canvas.width = img.width;
    canvas.height = img.height;
    ctx.drawImage( img, 0, 0 );
    localStorage.setItem( "savedImageData", canvas.toDataURL("image/png") );
}
img.src = src;
// make sure the load event fires for cached images too
if ( img.complete || img.complete === undefined ) {
    img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
    img.src = src;
}

到此這篇關(guān)于關(guān)于canvas.toDataURL 在iOS運行失敗的問題解決 的文章就介紹到這了,更多相關(guān)canvas.toDataURL在iOS運行失敗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

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

巨人網(wǎng)絡(luò)通訊聲明:本文標題《關(guān)于canvas.toDataURL 在iOS運行失敗的問題解決》,本文關(guān)鍵詞  關(guān)于,canvas.toDataURL,在,iOS,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于canvas.toDataURL 在iOS運行失敗的問題解決》相關(guān)的同類信息!
  • 本頁收集關(guān)于關(guān)于canvas.toDataURL 在iOS運行失敗的問題解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久国产精品一区二区| 免费视频成人| 激情中国色综合| 浪潮av在线| 可以看的av网址| 丝袜情趣国产精品| 亚洲综合色丁香婷婷六月图片| 欧美一区二区视频在线观看2022| 色综合一区二区三区| 日韩一区二区精品视频| 蜜桃av一区| 日韩 欧美 高清| 亚洲自拍另类综合| 99综合久久| 四虎国产精品永久| 日本在线一级片| 日韩中文字幕久久久经典网| www.xxx麻豆| 免费看日韩毛片| 国产一区二区视频在线观看| 欧美专区在线观看| 牛牛影视一区二区三区免费看| 肥熟一91porny丨九色丨| 91丨porny丨最新| 国新精品乱码一区二区三区18| 福利视频导航一区| 国产成人97精品免费看片| 欧美激情一区二区久久久| 国产成人高清激情视频在线观看| 蜜桃视频久久一区免费观看入口| 在线黄色的网站| 午夜国产一级| 爱情岛论坛亚洲品质自拍视频网站| 欧美性受xxxx黑人xyx| 91官网在线免费观看| 国产内射老熟女aaaa∵| 国产美女视频免费观看下载软件| 免费无码国产v片在线观看| 波波电影院一区二区三区| www.555国产精品免费| 91色婷婷久久久久合中文| 国产一区二区三区奇米久涩| 人人妻人人澡人人爽久久av| 欧美日韩国产亚洲沙发| 日本成人a网站| 亚洲精品偷拍视频| 51xx午夜影福利| 日韩视频国产视频| 黄色国产网站在线观看| 午夜精品在线视频一区| 在线观看中文字幕视频| 99久免费精品视频在线观看| 欧美激情国产在线| 激情成人中文字幕| 香蕉视频在线观看www| 91精品欧美福利在线观看| 污视频在线免费观看网站| 日本高清黄色片| 免费在线性爱视频| 天堂网在线观看| 大尺度在线观看| 国产乱码精品一区二区三区五月婷| 国产免费黄网站| 精品一区二区三区蜜桃| 国产精品嫩草99av在线| 91超薄丝袜肉丝一区二区| 日韩中文字幕精品视频| 成人欧美一区二区三区1314| 99精品国产高清一区二区麻豆| 国产成人精品在线观看| 中文字幕一区二区三区乱码在线| 欧美理论在线| 欧美成人milf| 国产日韩欧美一区在线| 日韩亚洲欧美一区二区三区| 一级特黄曰皮片视频| 亚洲制服国产| 欧美日韩国产成人高清视频| 亚洲最大免费视频| 亚洲欧美激情精品一区二区| 国产乱子伦精品无码码专区| 国产影视一区| 成人深夜视频在线观看| 国产成人在线视频网站| 亚洲欧洲日夜超级视频| 六月丁香婷婷色狠狠久久| 91在线看网站| 中文精品99久久国产香蕉| 亚洲乱码国产乱码精品精可以看| 亚洲人成毛片在线播放女女| a级片在线观看视频| 咪咪网在线视频| 自拍偷拍中文字幕| 国产日韩欧美在线看| 亚洲福利一区二区三区| 午夜精品在线视频一区| 91捆绑美女网站| 国产精品亚洲一区二区三区在线观看| 精品一区二区在线免费观看| 午夜激情一区| 亚洲av无码久久精品色欲| 最近中文字幕在线6| 91在线免费网站| 欧美bbbbb性bbbbb视频| 日本道色综合久久| 亚洲国产日韩成人综合天堂| 亚洲剧场午夜在线观看| 蜜桃精品在线观看| 青草av在线| 伦理中文字幕亚洲| 国产精品欧美精品| 操她视频在线观看| 日本不卡在线观看视频| 欧美高清视频免费观看| 911精品产国品一二三产区| 日韩日韩日韩日韩| 97福利网站在线观看视频| 伊人av在线com| 久久综合伊人| 色欲综合视频天天天| 欧美xxxx视频| 国偷自产视频一区二区久| 日韩欧美精品一区二区三区经典| 欧美日韩免费高清| 欧美黄页在线免费观看| 久久综合久久久久88| 午夜小视频福利在线观看| 欧美高清电影在线看| 老司机午夜精品99久久| 精品一区二区三区毛片| 九一国产精品视频| 国产成人一区二区三区影院| 国产一区二区三区网站| 中文乱码免费一区二区三区下载| 91精品啪aⅴ在线观看国产| 欧美成人影院| 成网站在线观看人免费| 极品白浆推特女神在线观看| 亚洲国产精品一区在线观看不卡| 国产乱理伦片a级在线观看| 激情一区二区三区| 夜级特黄日本大片_在线| 制服丝袜av在线| 公侵犯人妻一区二区三区| 欧美日韩黄色大片| 亚洲国产精品久久久久爰色欲| 久久99精品久久久久久久久久| 欧美高清性xxxxxxx| 韩日精品视频| jk漫画禁漫成人入口| 国产探花在线精品一区二区| 99视频精品全部免费在线视频| 日本天码aⅴ片在线电影网站| 在线性视频日韩欧美| 亚洲香蕉伊综合在人在线视看| 最近最新mv在线观看免费高清| 亚洲国产日韩一区无码精品久久久| 欧美日韩视频专区在线播放| 久久三级福利| 成人一区二区av| 精品国产18久久久久久| 日本久久一区二区| 大肉大捧一进一出好爽| 免费观看一级一片| 国产人妖ts一区二区| 视频一区中文字幕精品| 福利视频导航一区| 在线观看免费av网| 麻豆精品一二三| 91香蕉视频污| 国产精品扒开腿做爽爽爽的视频| 亚洲国产成人精品视频| 精品久久久久人成| 国产精品videossex撒尿| 伊人色**天天综合婷婷| 欧美在线观看成人| 自拍偷拍第9页| 欧美精品成人91久久久久久久| 欧美日韩性视频一区二区三区| 国产精品三级在线| 精品久久五月天| 欧美成人午夜做爰视频在线观看| 一区二区三区我不卡| 日韩av懂色| 激情网站在线| 欧洲精品在线播放| 国产精品视频地址| 蜜桃久久一区二区三区| 在线免费观看高清视频| 四虎4545www精品视频| 成人综合网址| 久久久久久999| 欧美一区二区影视| 精品日本一线二线三线不卡| 2018高清国产日本一道国产| 日本中文在线播放| 一级性生活视频| 三年中国中文在线观看免费播放| 中文字幕理论片| 亚洲国产视频二区| 91国产一区| 日本电影全部在线观看网站视频| 国产九一视频| av资源在线免费观看| 国产一区2区在线观看| 亚洲国产又黄又爽女人高潮的| 国产亚洲精品7777| 青草青在线视频| 在线视频播放大全| 精品成人无码久久久久久| 亚洲大片在线观看| 91精品国产综合久久香蕉麻豆| 手机看片一区二区| 亚洲天堂a在线| 日产精品久久久久久久| 国产一级二级在线观看| 永久91嫩草亚洲精品人人| 亚洲蜜桃视频| 欧美日韩精品一本二本三本| 1314成人网| 高清免费日韩| 奇米四色中文综合久久| 影音先锋资源av| 麻豆精品一区二区av白丝在线| 国产精品中文字幕在线观看| 亚洲欧洲日本精品| 加勒比久久高清| 亚洲一区二区在线观| 亚洲美女综合网| 欧美与亚洲与日本直播| 九九热国产精品视频| 在线国产精品视频| 国产强被迫伦姧在线观看无码| 成年人三级视频| 欧美xxxx做受欧美| yw3121.龙物视频永不失联| 97se狠狠狠综合亚洲狠狠| 国产精品99re| 中文字幕av一区二区三区谷原希美| 欧美极品第一页| 性色av一区二区三区免费| 欧美电影三区| 精品亚洲一区二区| 日韩三级一区| 成人在线免费观看视频网站| 97视频在线免费| 亚洲男人天堂av网| 国产最新精品视频| 97人妻精品一区二区三区软件| 亚洲最新在线视频| 天天射夜夜骑| av网站在线观看不卡| 欧美激情三区| 国产中文字幕视频| 美女网站免费观看视频| 天天看片天天操| 欧美黄色激情视频| 国产成人亚洲综合青青| 日本视频一区二区不卡| 啊啊啊一区二区| 九色porny自拍视频在线播放| 丁香婷婷综合网| 欧美xxxxx18| 国产视频三区| 免费三级欧美电影| 欧美野外猛男的大粗鳮| 国产成人va亚洲电影| 欧美成人影院在线播放| 成人av无码一区二区三区| 韩国美女主播一区| 精品福利在线看| 国产剧情一区二区在线观看| 亚洲国产成人私人影院tom| 91在线精品播放| 老鸭窝av在线| 久久夜色精品国产噜噜av| 精品国产乱码久久久久久1区2区| 国产高清免费视频| 色一区二区三区四区| 亚洲精品第一国产综合野草社区| 日韩一区有码在线| 欧美特黄一级视频| 亚洲.国产.中文慕字在线| 欧美综合国产| 91视频久色| 国产精品久久欧美久久一区| 最近的中文字幕在线看视频| 免费成人动漫| 2017亚洲男人天堂| 美州a亚洲一视本频v色道| 国产精品久久久久9999| 国产亚洲欧美在线视频| 欧美美女黄视频| www色啪啪| 91嫩草|国产丨精品入口| 中文字幕一区二区三三| 色8久久人人97超碰香蕉987| 欧美日韩精品一区二区在线播放| 久久久久国内| 丰满人妻中伦妇伦精品app| 亚洲第一色av| 中文高清一区| 国模少妇一区二区三区| 日韩妆和欧美的一区二区| 美女视频黄 久久| 国产成人精品一区二区三区在线观看| 伊人国产在线看一| 五月天综合婷婷| 亚洲视频在线一区二区| 红桃视频国产一区| eeuss影院www影院| 久久精品av麻豆的观看方式| 日韩亚洲欧美中文字幕| 成人在线观看a| 久久久久久久久久久久国产精品| 一本色道久久综合狠狠躁的番外| 国产电影一区二区三区| 永久在线免费观看| 午夜国产精品理论片久久影院| 99re热精品视频| 欧美年轻男男videosbes| 国产精品成人国产乱一区| 手机看片1024国产| 亚洲欧美日韩国产综合在线| 中文在线观看免费高清| 久久综合电影| av先锋影音资源站| 天天爽天天爽天天爽|