HTML5标签canvas图像处理

简介: HTML5标签canvas图像处理

drawImage


  

drawImage() 方法在画布上绘制图像、画布或视频。drawImage() 方法也能够绘制图像的某些部分,以及/或者增加或减少图像的尺寸。


语法


  

在画布上定位图像:

  

context.drawImage(img,x,y);

  

在画布上定位图像,并规定图像的宽度和高度:

    

context.drawImage(img,x,y,width,height);

  

剪切图像,并在画布上定位被剪切的部分:

    

context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);


参数


img  规定要使用的图像、画布或视频。

sx  可选。开始剪切的 x 坐标位置。

sy  可选。开始剪切的 y 坐标位置。

swidth  可选。被剪切图像的宽度。

sheight  可选。被剪切图像的高度。

x  在画布上放置图像的 x 坐标位置。

y  在画布上放置图像的 y 坐标位置。


width  可选。要使用的图像的宽度。(伸展或缩小图像)


height  可选。要使用的图像的高度。(伸展或缩小图像)


1 <canvas id="myCanvas" width="800" height="600">
 2         您的浏览器不支持canvas!
 3     </canvas>
 4     <script>
 5         var canvas = document.getElementById('myCanvas');
 6         if (canvas.getContext) {
 7             var ctx = canvas.getContext('2d');
 8             var img = new Image();
 9             img.onload = function() {
10                 if (img.width != canvas.width)
11                         canvas.width = img.width;
12                     if (img.height != canvas.height)
13                         canvas.height = img.height;
14 
15                     ctx.clearRect(0, 0, canvas.width, canvas.height);
16                     ctx.drawImage(img, 0, 0); // 设置图像对象,以及它在画布上的位置
17             };
18             img.src = "tree.gif";
19         }
20     </script>


注意:drawImage方法只能在图像完全载入后才能调用


getImageData与putImageData


  

getImageData() 方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。putImageData() 方法将图像数据(从指定的 ImageData 对象)放回画布上。


getImageData() 方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。

对于 ImageData 对象中的每个像素,都存在着四方面的信息,即 RGBA 值:


  • R - 红色 (0-255)
  • G - 绿色 (0-255)
  • B - 蓝色 (0-255)
  • A - alpha 通道 (0-255; 0 是透明的,255 是完全可见的)


color/alpha 以数组形式存在,并存储于 ImageData 对象的 data 属性中。

语法

  

context.getImageData(x,y,width,height);

  

context.putImageData(imgData,x,y,dirtyX,dirtyY,dirtyWidth,dirtyHeight);

参数


x  开始复制的左上角位置的 x 坐标。

y  开始复制的左上角位置的 y 坐标。

width  将要复制的矩形区域的宽度。

height  将要复制的矩形区域的高度。

imgData  规定要放回画布的 ImageData 对象。

x  ImageData 对象左上角的 x 坐标,以像素计。

y  ImageData 对象左上角的 y 坐标,以像素计。

dirtyX  可选。水平值(x),以像素计,在画布上放置图像的位置。

dirtyY  可选。水平值(y),以像素计,在画布上放置图像的位置。

dirtyWidth  可选。在画布上绘制图像所使用的宽度。

dirtyHeight  可选。在画布上绘制图像所使用的高度。


1 <canvas id="myCanvas" width="800" height="600">
 2         您的浏览器不支持canvas!
 3     </canvas>
 4     <script>
 5         var c=document.getElementById("myCanvas");
 6         var ctx=c.getContext("2d");
 7         ctx.fillStyle="red";
 8         ctx.fillRect(10,10,50,50);
 9 
10         var imgData=ctx.getImageData(30,30,50,50);
11         red=imgData.data[0];
12         green=imgData.data[1];
13         blue=imgData.data[2];
14         alpha=imgData.data[3];
15     </script>


toDataURL


  

toDataURL()方法将canvas上的元素保存为图像。context.toDataURL()返回的是一串Base64编码的URL。


语法


context.toDataURL('canvas.png');


参数

  

canvas.png生成的图像

 

save与restore


  

save方法用于保存上下文环境,restore方法用于恢复到上一次保存的上下文环境,都没有参数。Canvas 状态是以堆(stack)的方式保存的,每一次调用 save 方法,当前的状态就会被推入堆中保存起来。会保存strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, globalCompositeOperation 的值。你可以调用任意多次 save 方法。每一次调用 restore 方法,上一个保存的状态就从堆中弹出,所有设定都恢复。


语法:

  

context.save();

  

context.restore();


1 <canvas id="myCanvas" width="800" height="600">
 2         您的浏览器不支持canvas!
 3     </canvas>
 4     <script>
 5         window.onload=function(){
 6              var ctx=document.getElementById("myCanvas").getContext("2d");
 7              ctx.fillStyle = 'red';
 8              ctx.fillRect(10,10,150,150);
 9 
10              ctx.save();
11              ctx.fillStyle="green";
12              ctx.fillRect(30,30,110,110);
13 
14              ctx.save();
15              ctx.fillStyle="yellow";
16              ctx.fillRect(50,50,70,70);
17              ctx.restore();//回到上一个状态,即 ctx.fillStyle="green";
18              ctx.save();
19              ctx.fillRect(70,70,30,30);
20              ctx.restore();
21         }
22     </script>


效果


image.png

相关文章
|
29天前
|
移动开发 搜索推荐 UED
HTML5的新语义化标签
HTML5引入的这些新语义化标签,通过明确标识内容的结构和意义,使得网页结构更加清晰,易于理解和维护。使用这些标签不仅提升了网页的可读性和可访问性,还增强了搜索引擎和辅助技术对网页内容的解析能力。在实际开发中,合理使用这些语义化标签,能够显著提升网页的质量和用户体验。
94 49
|
12天前
|
Web App开发 移动开发 前端开发
html5 canvas五彩碎纸屑飘落动画特效
h5 canvas飘落纸片动画是一款实现五彩纸屑飘落的背景动画特效,基于canvas绘制的空中飘落的纸屑片动画特效,适用于网页动态背景效果代码。简单使用,欢迎下载!代码适用浏览器:搜狗、360、FireFox(建议)、Chrome、Safari、Opera、傲游、世界之窗,是一款不错的的特效插件,希望大家喜欢!
32 5
|
23天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
35 5
|
24天前
|
前端开发
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
19 0
基于canvas实现的彩色纸屑组成文字3d动画HTML源码
|
24天前
|
移动开发 前端开发 HTML5
HTML5 Canvas制作的粒子十秒倒计时源码
一段基于HTML5 Canvas制作的粒子爆炸,十秒数字倒计时,全屏倒计时动画效果,给人一种非常大气的视觉感
22 0
HTML5 Canvas制作的粒子十秒倒计时源码
|
1月前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
1月前
|
前端开发 JavaScript
Canvas三维变化背景动画HTML源码
Canvas三维变化背景动画HTML源码
31 5
|
1月前
|
存储 移动开发 前端开发
|
2月前
|
前端开发
【HTML】img标签和超链接标签
【HTML】img标签和超链接标签
52 2
|
2月前
|
Web App开发 数据采集 移动开发
HTML5新增的属性和标签
HTML5新增的属性和标签
126 0
下一篇
DataWorks