HTML 5 canvas 图像处理

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

创新互联建站10多年企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,企业网站建设及推广,对木托盘等多个领域拥有丰富的网站运维经验的网站建设公司。

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

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

 
 
 
 
  1.       
  2.    
  3.       
  4. canvas图像处理     
  5.      
  6.      
  7. canvas

         
  8. 是时候更换浏览器了点击下载firefox    
  9.    

  10.    
  11. 图像的反转   

  12.    
  13.     
  14.     
  15.      
  16.    
  17.       
  18.    
  19.       
  20. canvas图像处理     
  21.      
  22.      
  23. canvas

         
  24. 是时候更换浏览器了点击下载firefox    
  25.    

  26.    
  27. 图像的反转   

  28.    
  29.     
  30.     
  31.      
  32.    
  33.       
  34.    
  35.       
  36. canvas图像处理     
  37.      
  38.      
  39. canvas

         
  40. 是时候更换浏览器了点击下载firefox    
  41.    

  42.    
  43. 图像的反转   

  44.    
  45.     
  46.     
  47.      
  48.    

1)html5 的canvas调用

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

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

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

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

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

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

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

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

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

 

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

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

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

网站标题:HTML 5 canvas 图像处理
链接分享:http://www.stwzsj.com/qtweb/news27/13727.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联