av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

問題描述

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

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.4tl426be.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:

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

回答2:

取當前坐標顏色的時候?qū)捀咴O(shè)為1PX呢?var imgData = ctx.getImageData(pos.x, pos.y, 1, 1);剛好我也在弄這塊,https://github.com/S-mohan/ca...

標簽: JavaScript
主站蜘蛛池模板: 日本成人免费网站 | 黄在线 | 日韩成人一区二区 | 国产精品久久久久久婷婷天堂 | 亚洲免费成人 | 奇米在线 | 国产在线观看一区二区三区 | 欧美日韩综合视频 | 在线免费国产视频 | 黄色片网站国产 | 中文字幕成人av | 一区二区精品 | 婷婷综合五月天 | 久久另类 | 91 中文字幕 | 日韩在线一区二区三区 | 狠狠干av | 日韩在线欧美 | 亚洲一区二区免费视频 | 日韩不卡一区二区 | 亚洲欧美在线视频 | 久久精品国产免费看久久精品 | 婷婷中文在线 | 亚洲一区二区三区四区五区午夜 | 欧美成人免费 | www.成人在线视频 | 国产真实乱全部视频 | 久草网站 | 精品亚洲永久免费精品 | 中文在线www | 美女黄18岁以下禁止观看 | 久久久久成人精品亚洲国产 | av在线一区二区三区 | 一区二区三区免费在线观看 | 狠狠干五月天 | 国产一区二区三区 | 碰碰视频 | 欧美亚洲视频在线观看 | 综合国产第二页 | 国产区精品| 国产东北一级毛片 |