亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 詳解canvas.toDataURL()報錯的解決方案全都在這了

詳解canvas.toDataURL()報錯的解決方案全都在這了

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

報錯詳盡信息

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

關鍵詞

  • canvas.toDataURL()
  • crossOrigin
  • Access-Control-Allow-Origin

前言

最近在做一個創意類的圖片合成工具,大概齊就是通過拼接自定義的文字和圖片信息生成一張商品圖片類似的功能,項目中用到了fabric.js這個畫板庫,最后一步在保存圖片的時候報上面的一長串錯誤,墻內墻外搜了一遍,給出的解決方案都不全面,為避免同學們再次踩坑,于是有了此文

正文

我們在convertDOM2Image時,如果DOM內存在圖片資源,該資源所在的web-server是不支持跨域的,保存圖片是不會成功的。

因此在排查問題時,首先要確定

  • web-server是否允許跨域,我們以nginx為例,response-header內要存在Access-Control-Allow-Orgin:xxxx(可以是*,安全性要求比較高的可以根據主域名自定義)
  • 如果是img標簽, 是否添加了crossorigin="anonymous", 如果是Image對象,同樣是否添加了改屬性obj.crossOrigin='anonymous'
  • 如果還不行,這里先不把答案放出來,我們先看看栗子

在接下來的栗子中我們會用到將Image轉換為canvas對象的方法

function convertImageToCanvas(image) {
// 創建canvas DOM元素,并設置其寬高和圖片一樣 
let canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
canvas.getContext("2d").drawImage(image, 0, 0);
// 我們在實際的開發中,需要將抓換后的base64圖片編碼傳輸到后臺圖片服務器,由server直接存儲或者生成一張圖片;
// 所以會用到 toDataURL
console.log(canvas.toDataURL('image/jpeg'))
return canvas;
}

栗子1

本地未設置跨域允許選項crossorigin=anonymous,web-server未設置跨域允許選項

<div id="d1">
<img style="width: 300px;height: 240px;" src="http://jb51.net/images/cover_thumbnail_3rd.jpg" alt="">
<p>本地未設置跨域允許選項crossorigin=anonymous,web-server未設置跨域允許選項</p>
</div>
<button onclick="setCanvas('d1')">canvas保存</button>
function setCanvas(DOMID) {
let img = document.getElementById(DOMID).querySelector('img')
document.body.appendChild(convertImageToCanvas(img))
}

很顯然,報錯

栗子2

本地標簽內設置跨域允許選項, web-server未設置跨域允許選項

這次連圖片都出不來,直接報錯

這個好理解,瀏覽器同源策略限制嘛

Access to image at 'xxxx' (redirected from 'xxxx') from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

栗子3

本地未設置跨域允許選項crossorigin=anonymous, web-server設置跨域允許選項

報錯,妥妥的。

栗子4

本地標簽內設置跨域允許選項crossorigin=anonymous, web-server設置跨域允許選項

<div id="d4">
<img style="width: 300px;height: 240px;" src="https://img.alicdn.com/tfs/TB1_uT8a5ERMeJjSspiXXbZLFXa-143-59.png" alt="" crossorigin="anonymous">
<p>本地設置跨域允許選項`crossorigin=anonymous`,`web-server`設置跨域允許選項</p>
</div>
<button onclick="setCanvas('d4')">canvas保存</button>

居然可以了,但是~如果在代碼內設置跨域呢?

栗子5

function setCanvas(DOMID) {
let img = document.getElementById(DOMID).querySelector('img')

img.crossOrigin= 'anonymous'

document.body.appendChild(convertImageToCanvas(img))
}

報錯

我看官方文檔的意思是必須同步設置crossOrigin=anonymous,該圖片憑證才會被信任

This means that CORS is enabled and credentials are sent if the image is fetched from the same origin from which the document was loaded.

否則緩存的圖像數據仍然會被畫布視為有污染的跨源內容.

怎么辦?重新取一遍圖片唄,加個隨機數,圖片還是那個圖片,不過加了個馬甲,瀏覽器就不認識了

栗子6

function setCanvas(DOMID) {
let img = document.getElementById(DOMID).querySelector('img')

img.src =img.src+'?v='+Math.random()
img.crossOrigin= 'anonymous'

img.onload=()=>{
document.body.appendChild(convertImageToCanvas(img))
}
}

binggo, 完美解決

所以我們在開發過程中,新建圖片,更換圖片,還原圖片等功能代碼內,最好每一次都加個隨機數,以保證源都是最新的,不走緩存

多說一點吧,關于fabric.js的相關跨域配置見下方

let _fabricConfig = {
// ....
crossOrigin:'anonymous'
};
/* fabric對象 */
let _fabricObj = new fabric.Canvas(id, _fabricConfig);


// 新建圖片對象時
let imgInstance = new fabric.Image.fromURL(url + '?v='+ Math.random(), img => {}, {crossOrigin: 'anonymous'})

// 動態更新圖片時
let currentActive = _fabricInstance.getActiveObj();
currentActive.setSrc(randomURL, img =>{}, {crossOrigin: 'anonymous'})

github:http://github.com/phillyx

到此這篇關于詳解canvas.toDataURL()報錯的解決方案全都在這了的文章就介紹到這了,更多相關canvas.toDataURL()報錯內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

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

巨人網絡通訊聲明:本文標題《詳解canvas.toDataURL()報錯的解決方案全都在這了》,本文關鍵詞  詳解,canvas.toDataURL,報,錯的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解canvas.toDataURL()報錯的解決方案全都在這了》相關的同類信息!
  • 本頁收集關于詳解canvas.toDataURL()報錯的解決方案全都在這了的相關信息資訊供網民參考!
  • 推薦文章
    欧美一区二区三区在线观看| 国产亚洲精品aaa大片| 青青青草影院| 国产一区二区精品在线观看| 国产成人精品综合久久久| 欧美1区| 人人干人人插| 韩国毛片 免费| 国产精品1024在线永久免费 | 免费一级片在线| 欧美国产日韩精品| 美国一区二区三区| 精品国产一区二区三区国产馆| 久久国产一区二区| 精品国产三级a| 国产精品1024在线永久免费 | 精品视频在线观看免费| 高清一级做a爱过程不卡视频| 成人免费福利片在线观看| 韩国三级视频在线观看| 美女免费毛片| 欧美激情伊人| 99久久精品国产免费| 国产成人精品综合在线| 日韩在线观看免费| 国产韩国精品一区二区三区| 午夜激情视频在线播放| 欧美爱爱动态| 日本免费乱理伦片在线观看2018| 精品国产一区二区三区精东影业| 999久久狠狠免费精品| 午夜久久网| 精品视频在线观看一区二区| 九九久久国产精品| 欧美激情一区二区三区视频 | 美女免费毛片| 国产麻豆精品高清在线播放| 国产一区免费在线观看| 国产精品1024在线永久免费 | 日韩中文字幕一区二区不卡| 欧美1区| 久久久久久久久综合影视网| 中文字幕一区二区三区 精品| 久久福利影视| 成人在激情在线视频| 黄色免费三级| 国产精品1024在线永久免费 | 国产91丝袜高跟系列| 成人高清免费| 久久国产一久久高清| 亚飞与亚基在线观看| 精品视频免费在线| 国产麻豆精品免费密入口| 天天色成人| 国产a视频| 午夜激情视频在线观看| 麻豆网站在线看| 国产成人欧美一区二区三区的| 超级乱淫伦动漫| 日本免费区| 高清一级淫片a级中文字幕 | 精品国产亚洲人成在线| 成人免费一级毛片在线播放视频| 91麻豆国产| 亚洲精品永久一区| 九九免费高清在线观看视频| 成人影院久久久久久影院| 欧美一级视频免费| 日本免费乱人伦在线观看 | 美女免费毛片| 日韩欧美一二三区| 成人免费观看视频| 日韩在线观看视频免费| 日本在线不卡视频| 欧美日本免费| 亚洲第一色在线| 国产一区二区精品久久91| 亚飞与亚基在线观看| 欧美国产日韩精品| 日韩av东京社区男人的天堂| 久久国产一久久高清| 国产精品12| 欧美1区| 可以在线看黄的网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 999精品在线| 你懂的在线观看视频| 毛片的网站| 999久久66久6只有精品| 欧美a免费| 国产成人啪精品视频免费软件| 成人免费一级毛片在线播放视频| 日韩avdvd| 日韩在线观看网站| 精品在线视频播放| 欧美日本国产| 欧美激情伊人| 成人免费观看视频| 国产极品精频在线观看| 国产成人精品综合久久久| 成人a级高清视频在线观看| 一本高清在线| 亚洲精品影院一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本乱中文字幕系列| 91麻豆国产福利精品| 亚洲第一视频在线播放| 毛片的网站| 天天做人人爱夜夜爽2020毛片| 999久久66久6只有精品| 一级女性大黄生活片免费| 黄色福利片| 香蕉视频亚洲一级| 二级片在线观看| 日韩欧美一二三区| 欧美日本免费| 日韩中文字幕一区| 精品国产一区二区三区久久久蜜臀 | 色综合久久天天综合绕观看| 久久国产精品自由自在| 久久国产精品自线拍免费| 九九精品久久久久久久久| 免费的黄色小视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美激情伊人| 精品久久久久久中文| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | a级精品九九九大片免费看| 精品国产一区二区三区精东影业| 欧美激情一区二区三区在线| 日韩av成人| 精品久久久久久中文字幕2017| 国产成人欧美一区二区三区的| 国产一区免费观看| 午夜精品国产自在现线拍| 国产一区二区精品久久91| 欧美电影免费看大全| 国产精品1024在线永久免费 | 国产综合91天堂亚洲国产| 日韩女人做爰大片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本在线www| 青青青草影院| 国产原创中文字幕| 国产成人欧美一区二区三区的| 九九免费高清在线观看视频| 久久99这里只有精品国产| 精品国产一区二区三区久久久狼| 国产麻豆精品免费视频| 国产不卡高清| 国产不卡在线播放| 国产一区免费观看| 国产91丝袜在线播放0| 久久99爰这里有精品国产| 麻豆午夜视频| 一级毛片看真人在线视频| 精品久久久久久影院免费| 精品久久久久久中文字幕2017| 色综合久久天天综合观看| 欧美一级视频免费观看| 精品国产一区二区三区国产馆| 亚欧成人乱码一区二区| 精品视频在线观看一区二区| 国产一区二区精品尤物| 国产精品1024永久免费视频| 亚洲女人国产香蕉久久精品| 精品国产亚一区二区三区| 日本伦理片网站| 日本特黄特黄aaaaa大片| 久草免费资源| 可以在线看黄的网站| 欧美大片一区| 二级片在线观看| 二级特黄绝大片免费视频大片| 欧美一区二区三区性| 欧美激情一区二区三区视频| 国产一区免费在线观看| 久久精品成人一区二区三区| 欧美激情在线精品video| 欧美α片无限看在线观看免费| 色综合久久久久综合体桃花网| 日韩中文字幕在线播放| 久久国产精品自线拍免费| 亚洲 欧美 成人日韩| 天堂网中文在线| 国产91精品露脸国语对白| 国产91视频网| 成人免费观看的视频黄页| 国产伦精品一区二区三区无广告 | 九九热精品免费观看| 午夜家庭影院| 免费国产在线观看| 久久国产影院| 亚欧视频在线| 国产成人精品综合在线| 日本免费乱人伦在线观看 | 亚飞与亚基在线观看| 日韩在线观看免费完整版视频| 日韩中文字幕一区二区不卡| 亚欧乱色一区二区三区|