午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

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

關于canvas.toDataURL 在iOS運行失敗的問題解決

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

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

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

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

我擦,這怎么辦???
然后去cnbing搜,好多相同問題,好多原因,有個老外說動態更改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">長安按海報發送給朋友</p>
    </div>
</template>
<script>
export default {
  data () { // 參數
    const u = navigator.userAgent // ios終端
    const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios終端
    return { // 返回參數
      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函數
     */
    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對象轉化為image/png
        var dataUrl = canvas.toDataURL('image/png')
      } catch (err) {
        console.log(err)
      }

      // 創建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

里面講了畫布的污染和解決方法,就是設置 crossorigin = “Anonymous”;里面的方法也是先設置crossorigin在圖片加載完后設置 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;
}

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

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

巨人網絡通訊聲明:本文標題《關于canvas.toDataURL 在iOS運行失敗的問題解決》,本文關鍵詞  關于,canvas.toDataURL,在,iOS,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于canvas.toDataURL 在iOS運行失敗的問題解決》相關的同類信息!
  • 本頁收集關于關于canvas.toDataURL 在iOS運行失敗的問題解決的相關信息資訊供網民參考!
  • 推薦文章
    中文字幕av一区二区三区高| 欧美大片国产精品| 性生活视频软件| 亚洲精品国产一区黑色丝袜| 亚洲熟妇国产熟妇肥婆| 动漫美女被爆操久久久| 中文字幕日韩有码| 欧美日韩免费一区二区三区| 久久久国产精品不卡| 亚洲春色一区二区三区| 久草福利资源在线观看| 日本wwwwwww| wwwwww欧美| 成人在线免费网站| 97香蕉久久超级碰碰高清版| 亚洲精品国产综合久久| 欧美日韩一区二区精品| 久久久久久久网| 日本视频一区二区| 波多野结衣高清视频| 久久久国产一级片| 51自拍视频在线观看| 伊人网在线免费| 国产美女精品久久久| 97成人精品区在线播放| 国产一区二区免费| 91精品国产入口| 亚洲国产精品久久艾草纯爱| 99麻豆久久久国产精品免费 | 午夜啪啪免费视频| 91国产丝袜在线放| 欧美一区二区三区免费观看| 色偷偷888欧美精品久久久| 日韩一区二区在线观看视频| 天天影视网天天综合色在线播放| 国产欧美综合在线观看第十页 | 97精品人妻一区二区三区蜜桃| 97超碰在线人人| 欧美日韩成人一区二区三区| 成人久久一区二区| 韩国19禁主播vip福利视频| 亚洲男人7777| 欧美一区二视频| 欧美特黄级在线| 亚洲日韩欧美一区二区在线| 国产sm精品调教视频网站| 色婷婷综合视频| 亚洲一卡二卡在线观看| 男女视频免费看| 少妇视频一区二区| 亚洲国产果冻传媒av在线观看| 日本特黄a级片| 亚洲不卡中文字幕无码| 国产又大又长又粗又黄| 鲁鲁狠狠狠7777一区二区| 亚洲va欧美va在线观看| 国产精品av免费在线观看| 欧美精品九九久久| 久久精品国产免费观看| 亚洲女人天堂网| 精品人伦一区二区色婷婷| 欧美午夜影院一区| 欧美日韩综合视频网址| 一区二区欧美在线观看| 国产精品国产a| 久久婷婷综合激情| 成人动漫在线一区| 国产黄色91视频| 久久99国产精品久久99果冻传媒 | 日韩av在线不卡| 欧美一级精品在线| 欧美男女性生活在线直播观看| 日韩欧美一区二区三区| 午夜精品久久久久久久久久| 曰韩精品一区二区| 亚洲女爱视频在线| 亚洲美女偷拍久久| 日韩码欧中文字| 国产精品不卡在线观看| 国产精品色噜噜| 亚洲国产精品国自产拍av| ww久久中文字幕| 成人av电影在线观看| 国产成人啪午夜精品网站男同| 狠狠狠色丁香婷婷综合激情| 麻豆精品国产传媒mv男同| 日本三级福利片| 亚洲精品无amm毛片| 国产欧美一区二区三区视频| 欧美激情三级免费| 欧美激情国产精品| 欧美精品18videos性欧| 欧美精品videossex88| 欧美高清第一页| 欧美极品少妇xxxxx| 欧美高清在线播放| 97精品一区二区三区| 亚洲18私人小影院| 欧美中文在线视频| 国产精品美女在线| 成人写真视频福利网| 亚洲成人tv网| 午夜精品短视频| 精品国产精品一区二区夜夜嗨| 欧美一级精品大片| 日韩欧美色综合网站| 日韩欧美在线不卡| 亚洲精品福利免费在线观看| 亚洲色图激情小说| 久久激情视频免费观看| 欧美日本高清视频| 91精品国产乱码久久久久久蜜臀| 26uuu亚洲国产精品| 中文字幕乱码日本亚洲一区二区| 456国产精品| 欧美一区2区视频在线观看| 91精品国产麻豆国产自产在线| 欧美一二三在线| 亚洲成人久久网| 亚洲人成电影网站| 大胆人体色综合| 91福利视频在线观看| 国产精品久久在线观看| 114国产精品久久免费观看| 精品卡一卡二| 亚洲午夜精品久久| 亚洲欧洲成人精品av97| 亚洲v国产v| 国产精品美女呻吟| 都市激情久久久久久久久久久| 久久久久久久久四区三区| 涩涩涩999| 精品少妇人欧美激情在线观看| 免费在线激情视频| 91丝袜超薄交口足| 亚洲av无码一区二区三区人| 久久久久久久黄色| 一级做a爱片性色毛片| 久久久久免费| av电影一区二区| 亚洲男人的天堂一区二区| 一本到高清视频免费精品| 日韩欧美第一区| 色阁综合伊人av| 欧美影院久久久| 国产精品12| 51xx午夜影福利| 日本超碰在线观看| 在线观看国产精品一区| 日本中文字幕免费观看| 精品久久无码中文字幕| 国产一区二区伦理片| 国产精品女主播在线观看| 日韩欧美在线观看| 亚洲精品美女久久| 久久免费视频网| 国产精品久久国产精品| 国产91在线亚洲| 亚洲欧美激情一区二区三区| 免费看一级大片| 国产精品无码专区av免费播放| 另类的小说在线视频另类成人小视频在线 | 韩国黄色一级大片| 国产成年人视频网站| 欧美成人另类视频| 波多野结衣av无码| 麻豆成人久久精品二区三区小说| 国产欧美日韩在线| 欧美日韩一区二区在线视频| 中文字幕无线精品亚洲乱码一区 | 午夜黄色小视频| av一二三不卡影片| 黄色成人av在线| 亚洲欧美日韩天堂| 国产精品福利小视频| 亚洲乱码一区二区三区三上悠亚| 亚洲少妇第一页| 熟女俱乐部一区二区| 在线视频精品免费| 精品亚洲porn| 亚洲一区二区三区在线播放| 精品欧美一区二区在线观看| 欧美亚洲一区在线| 四虎永久国产精品| 久久出品必属精品| 日本中文字幕网| 麻豆成人免费电影| 亚洲夂夂婷婷色拍ww47| 亚洲国产日韩欧美在线动漫| 日韩美女av在线免费观看| 亚洲欧美丝袜| 亚洲美女高潮久久久| 特级做a爱片免费69| 视频一区国产视频| 亚洲蜜桃精久久久久久久| 亚洲激情第一页| 国产精品久久久久久亚洲调教| 日本三级中文字幕在线观看| 一出一进一爽一粗一大视频| 欧美男人天堂网| 成人黄页在线观看| 欧美色网站导航| 久久人人爽人人爽人人片av高清| 欧洲亚洲一区| 无码人妻aⅴ一区二区三区玉蒲团| www欧美在线| 高清不卡一区二区| 欧美日韩精品福利| 韩国19禁主播vip福利视频| 亚洲国产激情一区二区三区| 亚洲高清无码久久| 一级片视频网站| 久久精品一二三| 亚洲成人国产精品| 91免费精品国偷自产在线| 狠狠爱免费视频| 久久久久久久久久久网 | 国产原创一区二区| 欧美性猛交xxxx| 啊v视频在线一区二区三区 | 97av在线视频| japanese在线播放| 天堂网av2018| 日韩中文字幕一区二区三区| 亚洲国产精品一区二区尤物区| www.午夜精品| 欧美高清视频一区| 亚洲精品一区二区18漫画| 中文字幕av久久爽| 国产女主播在线一区二区| 亚洲精品乱码久久久久久金桔影视| 51国偷自产一区二区三区 | 自拍偷拍国产精品| 在线日韩精品视频| 欧洲精品一区色| 亚洲综合网在线观看| 手机看片国产1024| 精品成人在线视频| 97视频在线观看亚洲| 国产人妻777人伦精品hd| 久久精品99国产精| 成人国产精品免费| 精品乱码亚洲一区二区不卡| 成人动漫在线观看视频| 丰满饥渴老女人hd| 亚洲第一成人av| 亚洲免费伊人电影| 萌白酱国产一区二区| 国产奶头好大揉着好爽视频| 希岛爱理中文字幕| 国产69精品久久久久毛片 | 国产午夜精品视频免费不卡69堂| 欧美精品久久久| 极品人妻videosss人妻| 毛片av中文字幕一区二区| 欧美日韩日本视频| 亚洲一区中文字幕| 亚洲美女在线播放| 久久久综合网| 欧美日韩国产三级| 99视频日韩| 亚洲天堂资源在线| 日本vs亚洲vs韩国一区三区二区| 欧美三片在线视频观看| 成人在线中文字幕| 岛国精品一区二区三区| 久久九九精品| 欧美精品久久一区二区三区| 3d动漫啪啪精品一区二区免费| 国产伦精品一区三区精东| 三级不卡在线观看| 91精品国产高清一区二区三区蜜臀 | 亚洲最新视频在线播放| 国外视频精品毛片| 少妇一级淫免费放| www.亚洲欧美| 91国偷自产一区二区三区观看| 国产精品永久免费视频| 又大又长粗又爽又黄少妇视频| 亚洲高清精品视频| 欧美亚洲禁片免费| 国产精品xxxx| 天天摸日日摸狠狠添| 成人性生交大合| 在线观看日韩av| 国产一二三在线视频| 羞羞色院91蜜桃| 午夜精品久久久久久久蜜桃app| 国产欧美在线播放| 三级黄色片网站| 国产宾馆实践打屁股91| 一本色道久久综合亚洲精品小说| 欧美一级爱爱视频| 国产乡下妇女三片| 欧美午夜片在线免费观看| 91精品入口蜜桃| 特级西西人体高清大胆| 久久午夜羞羞影院免费观看| 欧美高清在线观看| 99日在线视频| 喷水一区二区三区| 日韩精品视频免费在线观看| 福利在线小视频| 国产一区二区小视频| 色婷婷香蕉在线一区二区| av资源站久久亚洲| 亚洲欧洲综合网| 国产日韩亚洲欧美综合| 午夜精品一区二区三区av| 三级黄色片免费看| 黄页视频在线91| 在线视频精品一| 少妇性l交大片| 久久亚洲国产精品一区二区| 日韩精品影音先锋| 中文字幕色呦呦| 91影院在线播放| 欧美狂野另类xxxxoooo| 亚洲精品国产系列| 波多野结衣在线观看视频| 色一情一乱一乱一91av| 就去色蜜桃综合| 青青草免费观看视频| 欧美日韩在线另类| 久久精品国产理论片免费| 精品久久免费视频| 五月天丁香久久| 精品一区二区不卡| 久久国产精品系列| 91国偷自产一区二区使用方法| 欧美污视频久久久| 岛国av中文字幕| 欧美亚洲综合色| 亚洲视频精品一区| 国产在成人精品线拍偷自揄拍| 欧美日本一区二区三区四区| 一级日韩一区在线观看| 国产精品久久影视| 粉嫩高清一区二区三区精品视频| 日韩欧美一二区| 亚洲区在线播放| 中文字幕亚洲欧美一区二区三区| 欧美一区二区三区日韩视频| 日本丰满少妇一区二区三区| 日精品一区二区三区| 在线免费日韩av| 给我免费观看片在线电影的| 色国产在线视频| 国产精品入口芒果| 特级毛片在线免费观看| 久久99精品久久久久久久久久| 色婷婷**av毛片一区| 精品国产一区二区三区久久久蜜月| 精品女厕一区二区三区| 国产精品天干天干在观线| 国模无码大尺度一区二区三区| 国产精品久久欧美久久一区| 亚洲av永久无码国产精品久久| 精品国产亚洲AV| 免费精品视频在线| 色欲av永久无码精品无码蜜桃| 中国a一片一级一片| 精品人妻一区二区三区麻豆91 | 日韩免费一区二区| 久久精品人人做人人爽| 日韩免费观看在线观看| 国产精品二区在线| 欧美精品一区在线| 五月天久久狠狠| 日韩少妇内射免费播放| 欧美另类videos| 1024av视频| 原创真实夫妻啪啪av| 亚洲a级黄色片| 亚洲精品第二页| 熟女人妻在线视频| 最新国产精品自拍| 日本一区二区三区在线免费观看| 日韩av一卡二卡三卡| wwwww在线观看| 一本加勒比波多野结衣| 亚洲精品视频久久久| 人妻av无码一区二区三区| 夫妻性生活毛片| 免费视频久久久| 国产成人免费看一级大黄| 久久国产夜色精品鲁鲁99| 美女精品一区二区| 成人福利在线看| 一区av在线播放| 欧美亚洲日本一区| 中文字幕视频在线免费欧美日韩综合在线看 | 欧美日韩xxx| 日韩av日韩在线观看| 国产91色在线播放| 国产欧美最新羞羞视频在线观看| 成人免费视频观看视频| 色吧亚洲视频| 成人午夜免费剧场| 搡女人真爽免费午夜网站| 欧美日韩一区二区三区四区五区六区| 国产美女免费网站| 最近国语视频在线观看免费播放| 麻豆一区二区三区| 中文字幕中文字幕一区| 在线看不卡av| 久久久国产精品x99av| 久久久久天天天天| 国内外成人激情视频| 久久草视频在线|