js關(guān)于getImageData跨域問題的解決方法
在學(xué)習(xí)h5的時(shí)候,canvas標(biāo)簽中g(shù)etImageData()報(bào)錯(cuò):security error!
具體代碼如下(chrome瀏覽器):
function createGSCanvas(img){ var canvas=document.createElement("canvas"); canvas.width=img.width; canvas.height=img.height; var ctx=canvas.getContext("2d"); ctx.drawImage(img,0,0); var c=ctx.getImageData(0,0,img.width,img.height); for(var i=0;i<c.height;i++){ for(var j=0;j<c.width;j++){ var x=(i*4)*c.height+(j*4); var r=c.data[x]; var g=c.data[x+1]; var b=c.data[x+2]; c.data[x]=c.data[x+1]=c.data[x+2]=(r+g+b)/3; } } ctx.putImageData(c,0,0,0,0,c.width,c.height); return canvas.toDataURL(); }
報(bào)錯(cuò)信息如下:Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
原因:createGSCanvas()調(diào)用了getImageData函數(shù),但是圖片存儲(chǔ)在本地文件,默認(rèn)為沒有域名,chrome瀏覽器判定為跨域才報(bào)錯(cuò)!
解決方法:1、將圖片放置在服務(wù)器中,由服務(wù)器返回給客戶端瀏覽器,遵循同源策略;
2、在IE、Firefox瀏覽器中打開。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- nodejs處理圖片的中間件node-images詳解
- jQuery插件ImageDrawer.js實(shí)現(xiàn)動(dòng)態(tài)繪制圖片動(dòng)畫(附源碼下載)
- javascript實(shí)現(xiàn)鼠標(biāo)移到Image上方時(shí)顯示文字效果的方法
- javascript從image轉(zhuǎn)換為base64位編碼的String
- js的image onload事件使用遇到的問題
- js中Image對(duì)象以及對(duì)其預(yù)加載處理示例
- 通過js獲取div的background-image屬性
- JavaScript Image對(duì)象實(shí)現(xiàn)原理實(shí)例解析
相關(guān)文章
用javascript實(shí)現(xiàn)源代碼的隱藏與解密的方法
用javascript實(shí)現(xiàn)源代碼的隱藏與解密的方法2009-12-12使用自定義setTimeout和setInterval使之可以傳遞參數(shù)和對(duì)象參數(shù)
該函數(shù)兼容ie,firefox。并且可以使用clearSetTimeOut和clearInterval清除,比原setTimeout,setInterval方便很多,并且參數(shù)可以是object。2009-04-04使用JS進(jìn)行目錄上傳(相當(dāng)于批量上傳)
腳本使用了WScript.Shell和Scripting.FileSystemObject的組件,所以必須要在IE下面和打開安全選項(xiàng)中運(yùn)行; 另外還用到了Jquery. 代碼只是客戶端代碼, 至于服務(wù)器的接收代碼網(wǎng)上好多了2010-12-12js實(shí)現(xiàn)跨域的4種實(shí)用方法原理分析
這篇文章主要分析了js實(shí)現(xiàn)跨域的4種實(shí)用方法原理,主要是使用jsonp跨域,使用window.name來進(jìn)行跨域,對(duì)這方面感興趣的朋友可以參考一下2015-10-10對(duì)于防止按鈕重復(fù)點(diǎn)擊的嘗試詳解
這篇文章主要介紹了對(duì)于防止按鈕重復(fù)點(diǎn)擊的嘗試,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04three.js利用gpu選取物體并計(jì)算交點(diǎn)位置的方法示例
這篇文章主要給大家介紹了關(guān)于three.js利用gpu選取物體并計(jì)算交點(diǎn)位置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用three.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11