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

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

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

瀏覽:53日期: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
主站蜘蛛池模板: 欧美噜噜噜 | 久久成人18免费网站 | 国产一区二区在线视频 | 午夜性激福利免费观看 | 中文字幕欧美日韩久久 | 免费人成黄页在线观看69 | 害羞的清纯女神露脸在线视频 | 小视频在线免费观看 | 亚洲精品一区二区不卡 | 草逼免费视频 | 久久国产欧美日韩高清专区 | 精品国产一区二区三区四区色 | 亚洲欧美中文v日韩v在线 | 国产欧美在线播放 | 欧美日韩在线国产 | 亚洲欧美日韩一区二区 | 激情综合网五月激情 | 中文线码中文高清播放中 | 精品无码一区在线观看 | 国产一区二区三区免费观看 | 国产午夜视频在线观看 | 日韩免费一区二区三区在线 | 麻豆传煤入口1.5 | 日韩精品一区二区三区 在线观看 | 国模无水印一区二区三区 | 91最新免费观看在线 | 爱爱爱免费视频观看在线网站 | 久久国产高清一区二区三区 | 国产精品玩偶在线观看 | 亚洲欧美日韩中另类在线 | 亚洲综合网在线观看 | 伊人丁香| 成人免费黄色网址 | 成人免费国产欧美日韩你懂的 | 国产小视频2023 | 日韩免费无砖专区2020狼 | 国产在线色视频 | 久草小区二区三区四区网页 | 国产精品成人麻豆专区 | 一区二区高清视频在线观看 | 日比视频在线观看 |