剛剛接觸canvas,學(xué)著把一張圖片轉(zhuǎn)換成黑白的。
但是始終不能成功,有點(diǎn)懵逼。
謝謝大家。
<body>
<canvas width="500" height="500"></canvas>
<script>
var canvas = document.querySelector("canvas");
var ctx = canvas.getContext("2d");
var image = new Image();
image.onload = function(){
ctx.drawImage(image,0,0);
makeGrayScale();
}
image.src = "images/background.jpg";
var makePixelGrayScale = function (r,g,b,a){
var y = ( 0.3 * r) + ( 0.59 * g ) + ( 0.11 * b);
return {r:y,g:y,b:y,a:y};
};
function makeGrayScale(){
var r,g,b,a;
var imageData = ctx.getImageData(0,0,500, 500)
var numPixels = imageData.data.length/4;
for (var i=0; i<numPixels; i++){
r = imageData.data[i*4+0];
g = imageData.data[i*4+1];
b = imageData.data[i*4+2];
a = imageData.data[i*4+3];
pixel = makePixelGrayScale(r,g,b,a);
imageData.data[i*4+0] = pixel.r;
imageData.data[i*4+1] = pixel.g;
imageData.data[i*4+2] = pixel.b;
imageData.data[i*4+3] = pixel.a;
}
ctx.putImageData(imageData,0,0);
};
</script>
</body>
Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
at makeGrayScale (file:///C:/Users/yocor/Github/aboutCanvas/createCanvas.html:26:37)
at Image.image.onload (file:///C:/Users/yocor/Github/aboutCanvas/createCanvas.html:14:17)是什么不成功?報(bào)了什么錯(cuò)?出現(xiàn)了什么現(xiàn)象?你不可能就貼一段代碼上來(lái)讓回答的人猜吧。
代碼無(wú)錯(cuò),如果你這邊不能運(yùn)行,一定是你直接用點(diǎn)開(kāi)html的方式來(lái)運(yùn)行代碼。
通過(guò)這種方式運(yùn)行的話(huà),你引入的圖片可能會(huì)被瀏覽器認(rèn)為是不同的站點(diǎn),從而canvas在getImageData的時(shí)候出現(xiàn)跨域錯(cuò)誤,canvas不能獲取渲染的跨域的圖片的信息。
如果你想正確運(yùn)行,需要用IIS或者nginx這樣的東西來(lái)做個(gè)本地站點(diǎn),或者使用webpack-dev-server
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。