最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

html5canvas图像处理的实现代码分享

来源:懂视网 责编:小采 时间:2020-11-27 15:10:21
文档

html5canvas图像处理的实现代码分享

html5canvas图像处理的实现代码分享:前两天无意中看了下《pro html5 programming》,发现html5竟然也能很好的支持图像处理,在此稍稍交代一下。与matlab处理图像类似的是,这里也是采用图像矩阵的形式。下面就介绍一个简单的例子:<!DOCTYPE html> <html> <
推荐度:
导读html5canvas图像处理的实现代码分享:前两天无意中看了下《pro html5 programming》,发现html5竟然也能很好的支持图像处理,在此稍稍交代一下。与matlab处理图像类似的是,这里也是采用图像矩阵的形式。下面就介绍一个简单的例子:<!DOCTYPE html> <html> <
前两天无意中看了下《pro html5 programming》,发现html5竟然也能很好的支持图像处理,在此稍稍交代一下。

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

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

<!DOCTYPE html> 
<html>
<head> 
<title>canvas图像处理</title> 
</head> 
<body> 
<h1>canvas</h1> 
<canvas id="canvas1" width="200" height="150">是时候更换浏览器了<a href="http://firefox.com.cn/download/">点击下载firefox</a></canvas> 
<script>
 var 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画布的位置
 }
</script>
<br/>
<button onclick="draw()">图像的反转</button>
<br/>
<canvas id="canvas2" width="200" height="150"></canvas> 
<script>
	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);
	}
</script> 
</body> 
</html>

 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放置到其根目录下进行操作。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

html5canvas图像处理的实现代码分享

html5canvas图像处理的实现代码分享:前两天无意中看了下《pro html5 programming》,发现html5竟然也能很好的支持图像处理,在此稍稍交代一下。与matlab处理图像类似的是,这里也是采用图像矩阵的形式。下面就介绍一个简单的例子:<!DOCTYPE html> <html> <
推荐度:
标签: 实现 代码 图像
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top