色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:86日期: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.lshqa.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
主站蜘蛛池模板: 上海一级毛片 | 在线播放第一页 | 国内精品九一在线播放 | 欧美日韩一区在线观看 | 九九九热视频 | 亚洲精品一区二区三区四区 | 亚洲天堂久久精品成人 | 九九精品激情在线视频 | 88av视频在线 | 成人免费久久精品国产片久久影院 | 亚洲操图 | 毛片视频网址 | 国产精品三级 | 久草热线视频 | 最新三级网址 | 久草在线网址 | 毛片久久久 | 久久综合88 | 国产成人精品日本亚洲专 | 久久777国产线看是看精品 | 自拍欧美日韩 | 国产偷怕 | 欧美日产国产亚洲综合图区一 | 亚洲一区二区三区久久精品 | 亚洲欧美综合一区二区三区四区 | 日本色综合网 | 最刺激黄a大片免费观看 | 一级特黄特色的免费大片视频 | 97免费视频在线观看 | 国产亚洲精品久久久久久午夜 | 国产成人精品日本亚洲专区6 | 女人又黄的视频网站 | 一级片欧美 | 特级一级毛片视频免费观看 | 在线观看精品自拍视频 | 精品久久久久久无码中文字幕 | 免费在线成人 | 亚洲一级毛片 | a级毛片毛片免费观看永久 a级毛片毛片免费很很综合 | 久久精品视频在线观看 | 全免费毛片在线播放 |