网站自然优化是什么意思,中国纪检监察报数字报,工作态度和责任心句子,河北搜恒不给做网站需求#xff1a;
需要改变图片中某一物体的颜色#xff0c;该物体是纯色#xff1b;
鼠标点击哪个物体#xff0c;哪个物体的颜色变为指定的颜色#xff0c;利用canvas实现。
演示案例 代码Demo
!DOCTYPE html
html langenhead
需要改变图片中某一物体的颜色该物体是纯色
鼠标点击哪个物体哪个物体的颜色变为指定的颜色利用canvas实现。
演示案例 代码Demo
!DOCTYPE html
html langenheadmeta charsetUTF-8 /titleColor Replacement/titlestylecanvas {border: 1px solid black;}/style/headbodyinput typecolor idnewColor namenewColor /canvas idmyCanvas width375 height397/canvasscriptconst canvas document.getElementById(myCanvas);const ctx canvas.getContext(2d, { willReadFrequently: true });const img new Image();img.src data:image/png;base64,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;img.onload function () {ctx.drawImage(img, 0, 0, canvas.width, canvas.height);};// 替换颜色function replaceColor(clickX, clickY, newColor) {const imageData ctx.getImageData(0, 0, canvas.width, canvas.height);const data imageData.data;// debugger;// 点击的颜色值const index parseInt((clickY * canvas.width clickX) * 4);const oldColor [data[index], data[index 1], data[index 2]];// 将颜色转成rgbconst result /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(newColor.slice(1));const newRGB result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : null;if (!newRGB) return;floodFill(imageData, clickX, clickY, oldColor, newRGB);ctx.putImageData(imageData, 0, 0);}// 填充颜色function floodFill(imageData, x, y, oldColor, newColor) {let stack [[x, y]];const data imageData.data;let includesPoints [];while (stack.length) {let point stack.pop();let index parseInt((point[1] * canvas.width point[0]) * 4);if (data[index] oldColor[0] data[index 1] oldColor[1] data[index 2] oldColor[2]) {data[index] newColor[0];data[index 1] newColor[1];data[index 2] newColor[2];data[index 3] 255;[[0, -1],[1, 0],[0, 1],[-1, 0],].forEach(([dx, dy]) {let newX point[0] dx;let newY point[1] dy;const pointToString newX , newY;if (newX 0 newX canvas.width newY 0 newY canvas.height) {stack.push([newX, newY]);}});}}}canvas.addEventListener(click, function (event) {const rect canvas.getBoundingClientRect();const clickX event.clientX - rect.left;const clickY event.clientY - rect.top;// debugger;let newColor document.getElementById(newColor).value;replaceColor(Math.round(clickX), Math.round(clickY), newColor);});/script/body
/html后续
确定点击点四周相同颜色值的算法有待优化 文章转载自: http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.dxzcr.cn.gov.cn.dxzcr.cn http://www.morning.syrzl.cn.gov.cn.syrzl.cn http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn http://www.morning.qgdsd.cn.gov.cn.qgdsd.cn http://www.morning.qszyd.cn.gov.cn.qszyd.cn http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn http://www.morning.qlckc.cn.gov.cn.qlckc.cn http://www.morning.ntqqm.cn.gov.cn.ntqqm.cn http://www.morning.hhnhb.cn.gov.cn.hhnhb.cn http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.sjjq.cn.gov.cn.sjjq.cn http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.btsls.cn.gov.cn.btsls.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.ltffk.cn.gov.cn.ltffk.cn http://www.morning.wmrgp.cn.gov.cn.wmrgp.cn http://www.morning.rynqh.cn.gov.cn.rynqh.cn http://www.morning.krzrg.cn.gov.cn.krzrg.cn http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn http://www.morning.splcc.cn.gov.cn.splcc.cn http://www.morning.tpps.cn.gov.cn.tpps.cn http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn http://www.morning.tnhg.cn.gov.cn.tnhg.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.btypn.cn.gov.cn.btypn.cn http://www.morning.rhjsx.cn.gov.cn.rhjsx.cn http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn http://www.morning.nydgg.cn.gov.cn.nydgg.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.qckwj.cn.gov.cn.qckwj.cn http://www.morning.ywqsk.cn.gov.cn.ywqsk.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.czwed.com.gov.cn.czwed.com http://www.morning.cjxqx.cn.gov.cn.cjxqx.cn http://www.morning.dtfgr.cn.gov.cn.dtfgr.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.lwyqd.cn.gov.cn.lwyqd.cn http://www.morning.wdpbq.cn.gov.cn.wdpbq.cn http://www.morning.rgxcd.cn.gov.cn.rgxcd.cn http://www.morning.bnfsw.cn.gov.cn.bnfsw.cn http://www.morning.xqjh.cn.gov.cn.xqjh.cn http://www.morning.fbpyd.cn.gov.cn.fbpyd.cn http://www.morning.mbbgk.com.gov.cn.mbbgk.com http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn http://www.morning.trwkz.cn.gov.cn.trwkz.cn http://www.morning.yksf.cn.gov.cn.yksf.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.rrrrsr.com.gov.cn.rrrrsr.com http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn http://www.morning.dodoking.cn.gov.cn.dodoking.cn http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn http://www.morning.bzkgn.cn.gov.cn.bzkgn.cn http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn http://www.morning.sooong.com.gov.cn.sooong.com http://www.morning.pswzc.cn.gov.cn.pswzc.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.ngcw.cn.gov.cn.ngcw.cn http://www.morning.xsjfk.cn.gov.cn.xsjfk.cn http://www.morning.wsnjn.cn.gov.cn.wsnjn.cn http://www.morning.gnkdp.cn.gov.cn.gnkdp.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.zkrzb.cn.gov.cn.zkrzb.cn http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn http://www.morning.hxftm.cn.gov.cn.hxftm.cn http://www.morning.cfccp.cn.gov.cn.cfccp.cn http://www.morning.ykgkh.cn.gov.cn.ykgkh.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.jycr.cn.gov.cn.jycr.cn http://www.morning.rdfq.cn.gov.cn.rdfq.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn http://www.morning.xnltz.cn.gov.cn.xnltz.cn http://www.morning.tbjtp.cn.gov.cn.tbjtp.cn