亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - 求助canvas繪制馬賽克的問題,老是取色不準

瀏覽:76日期:2022-11-23 17:56:07

問題描述

鼠標繪制的時候,取鼠標當前區塊的顏色值,然后設置畫筆的顏色,但是,取色老是差別很大,不知道是不是我的計算有問題,求助!

javascript - 求助canvas繪制馬賽克的問題,老是取色不準

<!DOCTYPE html><html><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><meta name='viewport' content='width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1' /><title></title><head> <style>*{ margin: 0; padding: 0;}.box { position: fixed; top: 300px;}img { vertical-align: middle;} </style></head><body> <p class='box'><button id='create'>生成</button><button id='clear'>清除</button> </p> <canvas id='canvas'></canvas> <script src='http://www.aoyou183.cn/wenda/js/jquery-1.9.1.js'></script> <script>// 本地圖片路徑var imgSrc = ’img/aaa.png’;var height = 300;var width = 480;//將圖片分成100份var xW = width / 100;var yH = height / 100;var clip = new mosaic(height, width, imgSrc);function mosaic(height, width, src) { var img = new Image(); var canvas = $(’#canvas’)[0]; var ctx = canvas.getContext(’2d’);img.addEventListener(’load’, function (e) {var mousedown = false, offsetX = canvas.offsetLeft, offsetY = canvas.offsetTop;canvas.width = width;canvas.height = height;ctx.drawImage(img, 0, 0, width, height, 0, 0, width, height);$(’#clear’).on(’click’, function () { ctx.drawImage(img, 0, 0, width, height, 0, 0, width, height);});$(’#create’).on(’click’, function () { var images = new Image(); images.onload = function () {$(’body’).append(images); } images.src = canvas.toDataURL()});// 計算當前鼠標坐標值在這個100份格子中的位置function getPos(x, y){ var px, py; var result = {x, y}; var posArr = createPosArr(); for(var i = 0; i < posArr.length; i++){px = posArr[i].x;py = posArr[i].y;if(x >= px){ result.x = posArr[i].x; continue;} } for(var i = 0; i < posArr.length; i++){px = posArr[i].x;py = posArr[i].y;if(y >= py){ result.y = posArr[i].y; continue;} } return result;}function createPosArr(){ var arr = []; for(var i = 0; i < 100; i++){arr.push({ x: i * xW, y: i * yH}); } return arr;}function down(e) { e.preventDefault(); mousedown = true;}function up(e) { e.preventDefault(); mousedown = false;}function move(e) { if(!mousedown){return;} e.preventDefault();// 如果鼠標按下 if (mousedown) {var pos = getPos(e.clientX, e.clientY);console.log(pos);var imgData = ctx.getImageData(pos.x, pos.y, 5, 5);var red = imgData.data[0];var green = imgData.data[1];var blue = imgData.data[2];var alpha = imgData.data[3] / 255;ctx.fillStyle = ’rgba(’ + red + ’,’ + green + ’,’ + blue + ’,’ + alpha / 2 + ’)’ctx.fillRect(pos.x, pos.y, 10, 10); }}// 在源圖像外顯示目標圖像。只有源圖像外的目標圖像部分會被顯示,源圖像是透明的。// ctx.globalCompositeOperation = ’destination-out’;canvas.addEventListener(’mousedown’, down);canvas.addEventListener(’mousemove’, move);canvas.addEventListener(’mouseup’, up); }); img.src = src;} </script></body></html>

問題解答

回答1:

可以試一下計算方格內的顏色平均值。去平均值,可以參考下:https://github.com/JackGit/ca...

回答2:

取當前坐標顏色的時候將寬高設為1PX呢?var imgData = ctx.getImageData(pos.x, pos.y, 1, 1);剛好我也在弄這塊,https://github.com/S-mohan/ca...

標簽: JavaScript
主站蜘蛛池模板: 午夜影院毛片 | 99热国产精品 | 一级毛片不卡片免费观看 | 日本三级黄网站 | 国产精品夜间视频香蕉 | 香蕉视频免费网站 | 西西午夜视频 | 青青热久麻豆精品视频在线观看 | 国产在线91区精品 | 古代的一a一片一级一片 | www在线观看视频 | 野外三级国产在线观看 | 欧美亚洲综合在线 | 美国毛片免费看 | 久久99综合国产精品亚洲首页 | 中文精品久久久久国产网址 | 一级黄色在线视频 | 欧美做爰xxxⅹ在线视频hd | 嫩模被xxxx视频在线观看 | 免费观看性行为的视频网站 | 国产成人精品综合久久久 | 精品视频麻豆网站 | 尤物在线看 | 曰批免费动漫视频播放免费 | 国产制服在线 | 日韩一区二区视频在线观看 | 免费日韩在线观看 | 欧美黑人与白人做爰 | 亚洲在线看片 | 亚洲一区二区三区在线免费观看 | 韩国免费高清一级毛片性色 | 亚洲国产情侣一区二区三区 | 青春草在线视频精品 | 欧美三级在线免费观看 | 国产美女视频一区二区二三区 | 日本久久中文字幕 | 日本老年人精品久久中文字幕 | 日韩在线视频线视频免费网站 | 国产三级在线观看 | 国产亚洲精品自在久久不卡 | 亚洲精品播放 |