好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識(shí)庫(kù) > 詳解Canvas 跨域脫坑實(shí)踐

詳解Canvas 跨域脫坑實(shí)踐

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

Canvas 跨域如何解決?這里記錄下使用 Canvas 繪圖過程中所遇到的跨域問題和解決方案。

先來看下實(shí)現(xiàn)方法。

實(shí)現(xiàn)方法

目標(biāo)圖片一般是由 圖片 + 文本 構(gòu)成。無論是千奇百怪的大小圖片,還是變幻莫測(cè)的各式文本,都能用 canvas api drawImage 和 fillText 方法來完成。

基本流程如下:

1、獲取 canvas 上下文 -- ctx

const canvas = document.querySelector(selector)
const ctx = canvas.getContext('2d')

2、繪圖

忽略圖片上的內(nèi)容,直接用 drawImage 將其畫到 canvas 畫布上即可。

const image = new Image()
image.src = src
image.onload = () => {
    ctx.save()
    // 這里我們采用以下參數(shù)調(diào)用
    this.ctx.drawImage(image, dx, dy, dWidth, dHeight)
    this.ctx.restore()
}

drawImage 有3種參數(shù)使用方式,具體用法可以查看MDN 文檔。

3、獲取圖像數(shù)據(jù)

調(diào)用 HTMLCanvasElement DOM 對(duì)象提供的 toBlob(), toDataURL() 或 getImageData() 方法,即可。

canvas.toBlob(blob => {
    // 你要的 blob
}, mimeType, encoderOptions)

這里的 mimeType 默認(rèn)值為 image/png。encoderOptions 指定了圖片質(zhì)量,可用于壓縮,不過需要 mimeType 格式為 image/jpeg 或者 image/webp。

Canvas 跨域

正常情況下,如果需要將繪制好的圖像輸出,我們可以調(diào)用 canvas 的 toBlob(), toDataURL() 或 getImageData() 方法來獲取到圖像數(shù)據(jù)。然而,遇到圖片跨域的情況就有些尷尬了。可能回報(bào)如下錯(cuò)誤:

Failed to execute 'toBlob' on 'HTMLCanvasElement': Tainted canvases may not be exported.

或者

Access to image at 'https://your.image.src' from origin 'https://your.website' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

先來看看第2種情況。

Access-Control-Allow-Origin

如果你跨域使用某些圖片資源,并且該服務(wù)未正確響應(yīng) Access-Control-Allow-Origin 頭信息, 則會(huì)報(bào)出如下錯(cuò)誤信息:

Access to image at 'https://your.image.src' from origin 'https://your.website' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

說明不允許跨域訪問,那么你可以試著讓后臺(tái)修改 Access-Control-Allow-Origin 的值為 * 或 your.website, 或者改用同域資源(考慮下?)。

接下來,我們來解決第1種情況。

img.crossOrigin = 'Anonymous'

為避免未經(jīng)許可拉取遠(yuǎn)程網(wǎng)站信息而導(dǎo)致的用戶隱私泄露(如 GPS 等信息,具體可搜索 Exif),在調(diào)用 canvas 的 toBlob(), toDataURL() 或 getImageData() 會(huì)拋出安全錯(cuò)誤:

Failed to execute 'toBlob' on 'HTMLCanvasElement': Tainted canvases may not be exported.

如果你的圖片服務(wù)允許跨域使用(如果不允許,見上條),那么你該考慮下給 img 元素加上 crossOrigin 屬性,即:

const image = new Image()
image.crossOrigin = 'Anonymous'
image.src = src

如此,你便可以拿到圖片數(shù)據(jù)了。如果沒招,換同域資源吧~

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Canvas 跨域脫坑實(shí)踐》,本文關(guān)鍵詞  詳解,Canvas,跨域,脫坑,實(shí)踐,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解Canvas 跨域脫坑實(shí)踐》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解Canvas 跨域脫坑實(shí)踐的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 达达兔午夜福利第九院| 在线观看网站资源免费播放| 小嫩苞h文高辣h文| 日韩美女三级| 放荡的闷骚娇妻小说全文阅读| 国产一级风流片A级古装| 亚洲精品无码成人AⅤ电影荒村| 小牝户又羞又胀又麻| 我的放荡丝袜美腿老师| 欧美一交一乱一视一频二区| 国产成人在线播放视频| 狠狠色噜噜狠狠狠狠69| 久久超碰青草夜夜人人| 亚洲秘?无码一区二区三区电影| 纤纤影视网址| 久久精品久久久精品美女| 国产在线不卡视频| 岳?好舒服?快?免老女人| 1313精品午夜电影无码不卡| 他强行给我开了苞| 久久99精品久久久久久秒播放器 | 51精品视频在线视频观看| 女人露私密部位视频| 张开腿我要添你下面视频| www.色偷偷| 高辣h文乱乳H文浪荡小说苏柔| 韩国一大片a毛片| 缚り拷问奴隷市场の宴| 欧美日韩亚洲精品瑜伽裤| 国产欧美第一页| 免费观看黄色网| 永久免费视频网站| 亚洲中文无码人aV在线69堂| 调教秘书跪趴撅起来| 嗯啊慢一点| 美女裸体?开腿羞羞吞精照片| 久久国产精品佐山爱| 久爱视频在线| 韩国毛片一区二区三区| 国产美女裸体无遮挡免费视频试看 | 亚洲????成人?√az在线禁|