700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > html5 canvas图像处理的实现代码分享

html5 canvas图像处理的实现代码分享

时间:2020-11-26 01:04:36

相关推荐

html5 canvas图像处理的实现代码分享

web前端|H5教程

html5 ,canvas,图像处理

web前端-H5教程

前两天无意中看了下《pro html5 programming》,发现html5竟然也能很好的支持图像处理,在此稍稍交代一下。

影视vip解析手机应用源码,arm装ubuntu系统,tomcat10开发文档,爬虫青海大学,大数据分析 php,seo 专有词汇lzw

与matlab处理图像类似的是,这里也是采用图像矩阵的形式。

业务管理 源码,vscode 反编译,ubuntu配置ip无法生效,c 上传tomcat,sqlite哪个书籍好,倒计时插件的使用,专科web前端框架技术,女人梦到脚上爬虫,init php,seo个人简介,h5 电商网站模板下载,网页音乐带歌词代码,aspx 模板源码,单介绍下载页面源码,志愿填报管理系统程序代码,小程序系统源代码lzw

下面就介绍一个简单的例子:

网站html源码,vscode没有输出,ubuntu没有网络连接选项,tomcat发布空间,sqlite安装下载,弹出层插件点击空白处消息,100个前端框架大全,爬虫搜集豆瓣帖子,php字符串 删除,seo打包,青鸟网站源码,监控网页制作模板下载,云购cms模板,微信小程序扫码核销phplzw

canvas图像处理

canvas

是时候更换浏览器了点击下载firefoxvar canvas1=document.getElementById(canvas1); var context1=canvas1.getContext(2d); image=new Image(); image.src="z.JPG"; image.onload=function(){context1.drawImage(image,0,0);//绘制原始图像,(0,0)表示图像的左上角位与canvas画布的位置 }

function draw(){var canvas2=document.getElementById(canvas2);var context2=canvas2.getContext(2d);var imagedata=context1.getImageData(0,0,image.width,image.height);var imagedata1=context2.createImageData(image.width,image.height);for(var j=0;j<image.height;j+=1)for(var i=0;i<image.width;i+=1){ k=4*(image.width*j+i); imagedata1.data[k+0]=255-imagedata.data[k+0]; imagedata1.data[k+1]=255-imagedata.data[k+1]; imagedata1.data[k+2]=255-imagedata.data[k+2]; imagedata1.data[k+3]=255;}context2.putImageData(imagedata1,0,0);}

1)html5 的canvas调用

var canvas1=document.getElementById(canvas1);//获取canvas元素var context1=canvas.getContext(2d);//此时获取到canvas图像上下文

2)创建图像并绘制原始图像

image=new Image();//创建image对象 image.src="z.JPG";//image的地址 image.onload=function(){context1.drawImage(image,0,0);//绘制原始图像,(0,0)表示图像的左上角位与canvas画布的位置 }

3)获取图像的rgba矩阵并操作

var imagedata=context1.getImageData(0,0,image.width,image.height);//getImageData(x1,y1,x2,y2)获取图像的rgba矩阵,其中截取图像的大小为(x1,y1)-(x2,y2) 的矩阵var imagedata1=context2.createImageData(image.width,image.height);//createImageData(x,y):创建宽高分别为x,y的图像矩阵 for(var j=0;j<image.height;j+=1)for(var i=0;i<image.width;i+=1){ k=4*(image.width*j+i); imagedata1.data[k+0]=255-imagedata.data[k+0]; imagedata1.data[k+1]=255-imagedata.data[k+1]; imagedata1.data[k+2]=255-imagedata.data[k+2]; imagedata1.data[k+3]=255;}context2.putImageData(imagedata1,0,0);//putImageData(image,0,0):将image矩阵的添加为context 原矩阵的一部分,起点为(0,0)}

下面就细说下html5图像的储存形式:

矩阵中每个像素点有四个通道分别储存r/g/b/a的值。(四个值按序连续的排列,为一维矩阵)

所以每两个像素间相隔4位,计算时

k=4*(image.width*j+i);为像素点(i,j)的位置,

imagedata1.data[k+0]表示R分量,依次类推,其中剩下的分别为G、B分量还有透明度。

这样上面的程序就实现了简单的图像的反转功能。

效果如下:

另外需要注意的是,getImageData()函数可能会涉及到跨域的problem,所以建议配置apache环境并将该html放置到其根目录下进行操作。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。