当前位置: 首页 > news >正文

vue做网站/seo如何优化关键词

vue做网站,seo如何优化关键词,温州设计网站建设,上海网页设计最近在慕课网看到一个canvas图像处理的教程,现在总结一下。 不多说其它了,开始说代码吧。 以下canvasA是原图的画布,canvasB是处理后的图像的画布 RGB通道过滤 RGB通道过滤 function filter(){var imageData contextA.getImageData(0,0,canv…

最近在慕课网看到一个canvas图像处理的教程,现在总结一下。 不多说其它了,开始说代码吧。 以下canvasA是原图的画布,canvasB是处理后的图像的画布 RGB通道过滤

RGB通道过滤

function filter(){var imageData = contextA.getImageData(0,0,canvasA.width,canvasA.height);//Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.//跨域认为是被污染的var pixelData = imageData.data;for(var i=0; i<canvasB.width*canvasB.height; i++){pixelData[4*i+0] = 0;  //r// pixelData[4*i+1] = 0; //gpixelData[4*i+2] = 0;  //b}contextB.putImageData(imageData,0,0,0,0,canvasA.width,canvasA.height); }

可以看到其实就是获取了像素点时候,把需要过滤掉的颜色置零就可以了

灰度化

function greyEffect(){var imageData = contextA.getImageData(0,0,canvasA.width,canvasA.height);var pixelData = imageData.data;for(var i=0; i<canvasB.width*canvasB.height; i++){var r = pixelData[4*i+0];var g = pixelData[4*i+1];var b = pixelData[4*i+2];var grey = r*0.3 + g*0.59 + b*0.11;pixelData[4*i+0] = grey;pixelData[4*i+1] = grey;pixelData[4*i+2] = grey;}contextB.putImageData(imageData,0,0,0,0,canvasA.width,canvasA.height); }

  就是通过一条算灰度的公式算出灰度值,然后把它赋给像素的rgb。

黑白二值化

function blackEffect(){var imageData = contextA.getImageData(0,0,canvasA.width,canvasA.height);var pixelData = imageData.data;for(var i=0; i<canvasB.width*canvasB.height; i++){var r = pixelData[4*i+0];var g = pixelData[4*i+1];var b = pixelData[4*i+2];var grey = r*0.3 + g*0.59 + b*0.11;if( grey > 255 / 2){v = 255;}else{v = 0;}pixelData[4*i+0] = v;pixelData[4*i+1] = v;pixelData[4*i+2] = v;}contextB.putImageData(imageData,0,0,0,0,canvasA.width,canvasA.height); }

就是算出灰度后,判断一下灰度是否大于255/2。如果是就认为该点是亮色,置为白色,否则,置为黑色。

反色

function reverseEffect(){var imageData = contextA.getImageData(0,0,canvasA.width,canvasA.height);var pixelData = imageData.data;for(var i=0; i<canvasB.width*canvasB.height; i++){var r = pixelData[4*i+0];var g = pixelData[4*i+1];var b = pixelData[4*i+2];pixelData[4*i+0] = 255 - r;pixelData[4*i+1] = 255 - g;pixelData[4*i+2] = 255 - b;}contextB.putImageData(imageData,0,0,0,0,canvasA.width,canvasA.height); }

  就是把像素的rgb变成255-rgb,就得到了相反的颜色

模糊算法

function blurEffect(){//临时保存样板var tmpData = contextA.getImageData(0,0,canvasA.width,canvasA.height);var tmpPixelData = tmpData.data;var imageData = contextA.getImageData(0,0,canvasA.width,canvasA.height);var pixelData = imageData.data;var blurR = 4; //模糊半径var totalnum = (2*blurR+1)*(2*blurR+1); //参考的像素点for(var i=blurR; i<canvasB.height-blurR; i++){for(var j=blurR; j<canvasB.width-blurR; j++){var totalr = 0, totalg = 0, totalb = 0;for(var dx=-blurR; dx<=blurR; dx++){for(var dy=-blurR; dy<=blurR; dy++){var x = i + dx;var y = j + dy;var p = x*canvasB.width + y;totalr += tmpPixelData[p*4+0]; totalg += tmpPixelData[p*4+1]; totalb += tmpPixelData[p*4+2]; }}pixelData[4*i+0] = totalr / totalnum;pixelData[4*i+1] = totalg / totalnum;pixelData[4*i+2] = totalb / totalnum;   }}contextB.putImageData(imageData,0,0,0,0,canvasA.width,canvasA.height); }

  这个算法比之前的复杂许多,原理就是获取当前像素点周围的像素的rgb的平均值赋给当前像素点。

边缘检测
1.roberts算子

function roberts(){//获取像素点阵var imageData = contextA.getImageData(0,0,canvasB.width,canvasB.height);var pixelData = imageData.data;//算法核心for(var i = 0; i < canvasB.height-1; i++){for(var j = 0; j < canvasB.width-1; j++){//获取需要像素下标var target = 4*(i*canvasB.width+j); //左上var member1 = 4*(i*canvasB.width+j+1); //右上var member2 = 4*((i+1)*canvasB.width+j); //左下var member3 = 4*((i+1)*canvasB.width+j+1); //右下for(var k = 0; k < 3; k++){var gx = pixelData[target+k] - pixelData[member3+k];var gy = pixelData[member1+k] - pixelData[member2+k];var vc = Math.abs(gx) + Math.abs(gy); pixelData[target+k] = vc;}}}contextB.putImageData(imageData,0,0,0,0,canvasB.width,canvasB.height);}

  这个算法更复杂了,什么阈值的我没看懂,没有用,发现效果还可以。

2.sobel算子

//sobel算子function sobel(){//获取像素点阵var imageData = contextA.getImageData(0,0,canvasB.width,canvasB.height);var pixelData = imageData.data;var fImageData = contextA.getImageData(0,0,canvasB.width,canvasB.height);var fData = fImageData.data; //拷贝pixelData//旋转后的卷积核var gxData = [[1,0,-1],[2,0,-2],[1,0,-1]];var gyData = [[1,2,1],[0,0,0],[-1,-2,-1]];//算法核心for(var i = 1; i < canvasB.height-1; i++){for(var j = 1; j < canvasB.width-1; j++){//获取需要像素下标var target = 4*(i*canvasB.width+j); var gx = [0,0,0]; //r,g,bvar gy = [0,0,0]; for(var dx = -1; dx <= 1; dx++){for(var dy = -1; dy <= 1; dy++){var x = i + dx;var y = j + dy;var p = 4*(x*canvasB.width + y);//rgb分别计算for(var k = 0; k < 3; k++){gx[k] += (fData[p+k] * gxData[dx+1][dy+1]);gy[k] += (fData[p+k] * gyData[dx+1][dy+1]);}}}for(var k = 0; k < 3; k++){var vc = Math.abs(gx[k]) + Math.abs(gy[k]);pixelData[target+k] = vc;}}}contextB.putImageData(imageData,0,0,0,0,canvasB.width,canvasB.height);}

  效果:

demo演示

转载于:https://www.cnblogs.com/githubMYL/p/9094738.html

http://www.lbrq.cn/news/1051561.html

相关文章:

  • 温州建设小学网站首页/东莞今天新增加的情况
  • 网站开发图片存哪里/seo关键词优化平台
  • 怎样维护网站建设/目前最新的营销方式有哪些
  • 还有多少用.net做网站的/成都seo培训班
  • 郑州手机网站制作/app001推广平台官网
  • 中建材建设有限公司网站/上海企业优化
  • 重庆南岸营销型网站建设公司哪家专业/sem推广竞价
  • 广西贵港建设集团有限公司网站/艾滋病阻断药有哪些
  • 做网站需要的带宽上行还是下行/培训机构是干什么的
  • 一元购网站建设流程图/推广普通话手抄报简单
  • 静态网页素材/seo网站优化排名
  • 漳州网站建设优化/淮北seo排名
  • 做网站网站如何定位/app下载注册量推广平台
  • 长沙网站模板建设/一键识图找原图
  • 快速开发手机网站/微商引流的最快方法是什么
  • 买网站去哪买/关键词挖掘方法
  • 做秩序册的网站/附近的成人电脑培训班
  • 不建网站如何做淘宝客/无锡网站制作
  • 博网站建设/抖音自动推广引流app
  • 网站建设优化服务方案/百度下载并安装最新版
  • 做地方服务性网站/今年疫情最新消息
  • 扬州 网站 建设/企业网站类型有哪些
  • wordpress 主题编写/网站优化是什么
  • 如何给网站绑定域名/seo的形式有哪些
  • 网站建设的报价/高质量发展服务业
  • 营销型企业网站的建设步骤/成人英语培训班哪个机构好
  • 个人网站建立/站长工具传媒
  • 返利网站 帐如何做/成人就业技术培训机构
  • .la域名做的网站/东莞营销网站建设优化
  • ftp网站目录/百度指数1000搜索量有多少
  • C++11中的移动语义
  • JavaWeb03——javascript基础语法
  • Sklearn 机器学习 数据降维PCA 使用PCA算法
  • 高效数据隔离方案:SpringBoot + JSqlParser 全解析!
  • ctfshow_萌新web9-web13-----rce
  • python selenium环境安装