一 图像组合

1.绘制阴影

在绘制阴影效果时,需要使用Canvas的多个属性配合完成

shadowBlur设置阴影的迷糊级数

shadowOffsetX设置形状与阴影的水平距离

shadowOffsetY设置形状与阴影的垂直距离

shadowColor设置阴影的颜色

<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="myCanvas" height="300" width="400"></canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var ctx= c.getContext("2d");
ctx.save(); //保存上下文对象
ctx.shadowBlur=10; //设置阴影的模糊级别
ctx.shadowOffsetX=20; //设置阴影与矩阵的水平距离
ctx.shadowOffsetY=20; //设置阴影与矩阵的垂直距离
ctx.shadowColor="black"; //设置阴影颜色
ctx.fillStyle="blue"; //设置填充颜色
ctx.beginPath(); //设置阴影颜色
ctx.fillRect(20,20,200,200); //绘制一个矩形
ctx.restore(); //获取保存的上下文对象
ctx.fillStyle="black"; //重新设置填充颜色
ctx.beginPath(); //设置阴影颜色
ctx.fillRect(300,20,200,200) ; //绘制第二个矩形
</script> 
</body>
</html>

显示:

shadowOffsetX和shadowOffsetY的值对阴影的效果?

shadowOffsetX和shadowOffsetY表示阴影与对象的水平和垂直距离,如果值是正数,阴影显示在图像的右边和下边;如果值是负 数,阴影显示在对象的左边和上边。

2.透明效果

主要通过设置globalAlpha属性控制重叠图形的透明度,该值介于0和1之间,0表示完全透明,1表示完全不透明

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="myCanvas" height="300" width="400"></canvas>
<script>
var c=document.getElementById("myCanvas");
var ctx= c.getContext("2d");
ctx.fillStyle="red"; //设置填充颜色
ctx.fillRect(20,20,300,200); //绘制不透明矩形框
ctx.globalAlpha=0.2 //设置透明度
ctx.fillStyle="blue"; //设置填充颜色
ctx.fillRect(100,100,300,200);//绘制第二个矩形框
ctx.fillStyle="green"; //设置填充颜色
ctx.fillRect(150,150,200,200);//绘制第三个矩形框 </script>
</body>
</html>

显示:

二 使用图像

1.插入图形

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>4.6.1.html</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="400">您的浏览器不支持canvas标签</canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
var img=new Image(); //创建一个图片数组
img.src="img01.png"; //设置图片路径
img.onload=function(){ //为图片加载一个onload事件
cxt.drawImage(img,0,0); //加载图片
};
</script>
</body>
</html>

onload事件:会在图像或者页面加载完成后立即发生

2.平铺图像

需要用到Canvas的createPattern函数,该函数有两个参数,一个是需要平铺的图像,二是以哪种方式进行平铺,repeat(在水平和垂直方向重复),repeat-x(在水平方向重复),repeat-y(在垂直方向重复),no-repeat(不重复)

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>4.6.2.html</title>
</head>
<body>
<canvas id="myCanvas" width="600" height="400">您的浏览器不支持canvas标签</canvas>
<script type="text/javascript">
var image = new Image();
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
image.src = "002.png";
image.onload = function () {
var ptrn = ctx.createPattern(image, "repeat");
ctx.fillStyle = ptrn;
ctx.fillRect(0, 0, 600, 600);
}; </script>
</body>
</html>

3.裁剪图像

该函数的多个重载方法

 <html>
<head>
<meta charset="utf-8">
<title>4.6.3.html</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="400">您的浏览器不支持canvas标签</canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
var img=new Image();
img.src="img01.png";
img.onload=function(){
cxt.drawImage(img,100,100,100,100,0,0,100,100);
};
</script>
</body>
</html>

4.像素级操作

根据各点像素颜色分配的不同,呈现出不同的图像

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>4.6.4.html</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="400">您的浏览器不支持canvas标签</canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=new Image();
img.src="img01.png";
img.onload=function(){
ctx.drawImage(img,0,0);
var imgData=ctx.getImageData(0,0,c.width,c.height);
// 反转颜色
for (var i=0;i<imgData.data.length;i+=4) {
imgData.data[i]=255-imgData.data[i];
imgData.data[i+1]=255-imgData.data[i+1];
imgData.data[i+2]=255-imgData.data[i+2];
imgData.data[i+3]=255;
}
ctx.putImageData(imgData,0,0);
};
</script>
</body>
</html>

html5图像组合的更多相关文章

  1. html5图像、图片处理【转】

    本文主题 情人节在网上看到国外JS牛人利用HTML5技术实现的一朵玫瑰花,深切的感受到HTML5技术的强大.本着学习的态度看了一下那朵玫瑰花的源代码,其中用到的HTML5技术是canvas标签,于是灵 ...

  2. 课题:html5图像羽化(不规则区域羽化,feather,html5羽化)

    下午搜索了一堆相关文章,没有找到符合要求的. 对一张图片应用不规则区域的羽化,该怎么做呢? 首先去查了下 羽化的原理,然而没有什么用, 然后就开始从表现层去研究怎么模拟? idea 1: blur滤镜 ...

  3. 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用&#183;高级篇

    *本文已刊登在<无线电>2014年第6期 <搭建属于你的在线实时採集系统>中已经对HTML5平台有了初步的认识,并基于此向大家展示了怎样将採集到的数据上传至网络.实现实时观測. ...

  4. HTML5+CSS3学习笔记(一)

    HTML5+CSS3概述 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就是HTML ...

  5. 分享10款功能强大的HTML5/CSS3应用插件

    1.纯CSS3美化Checkbox和Radiobox按钮 外观很时尚 利用CSS3我们可以打造非常具有个性化的用户表单,今天我们就利用CSS3美化Checkbox复选框和Radiobox单选框.CSS ...

  6. 分享10款激发灵感的最新HTML5/CSS3应用

    1.HTML5/CSS3实现iOS Path菜单 菜单动画很酷 Path菜单相信大家都不陌生吧,它在iOS中非常流行,今天我们要分享的菜单就是利用HTML5和CSS3技术来模拟实现这款iOS Path ...

  7. HTML5和CSS3不仅仅是两项新的Web技术标准

    HTML5和CSS3不仅仅是两项新的Web技术标准 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已 ...

  8. HTML5 简介、浏览器支持、新元素

    什么是 HTML5? HTML5 是最新的 HTML 标准. HTML5 是专门为承载丰富的 web 内容而设计的,并且无需额外插件. HTML5 拥有新的语义.图形以及多媒体元素. HTML5 提供 ...

  9. 分享10款效果惊艳的HTML5图片特效

    在HTML5的世界里,图片特效都十分绚丽,我们在网站上也分享过很多不错的HTML5图片特效,现在我们精选10款效果惊艳的HTML5图片特效分享给大家. 1.HTML5 3D正方体旋转动画 很酷的3D特 ...

随机推荐

  1. T-SQL 转义select … like中的特殊字符(百分号)

    众所周知,T-SQL中LIKE运算符使用%符号表示通配符.很多时候可能需要查询包含有%的数据,比如需要查询字段coupon中含有5%的数据.那么如何使用已经有百分号(%)符号的LIKE搜索字符串呢? ...

  2. SQL Server封闭掉 触发器递归

    SQL Server关闭掉 触发器递归SQL Server  是有一个开关, 可以关闭掉 触发器递归的.EXEC sp_dboption '数据库名字', 'recursive triggers', ...

  3. HttpsURLConnection 利用keepAlive特性进行优化一例

    最近项目中,遇到一个报错: java.lang.OutOfMemoryError: unable to create new native thread 报错的场景是:一个消息的群发,群里总共有50多 ...

  4. 怎么知道Fragment属于哪个Activity呢?

    如果程序是一条线运行的,Fragment 中 getActivity() 是获取的上一个打开或者执行的Activity中的值.   多个Activity也是如此,就看顺序是怎么执行的,getActiv ...

  5. Dipole Antenna : 2

    Characteristics of dipole antenna. %% % characteristics of dipole antenna % author : Leon % email:ya ...

  6. CentOS 7.0系统安装配置步骤详解

    CentOS 7.0系统是一个很新的版本哦,很多朋友都不知道CentOS 7.0系统是怎么去安装配置的哦,因为centos7.0与以前版本是有很大的改进哦. 说明: 截止目前CentOS 7.x最新版 ...

  7. Linux 基础操作

    根据关键字查找文件信息: cat <文件名> | grep <关键字>查询文件信息 显示100行: tail -100f easyhome.all.log |grep &quo ...

  8. form 表单基础知识

    <form method=" name="one" action="http://www.battlenet.com.cn/zh/"> & ...

  9. maven和svn区别

    构建工具-maven,版本控制工具-svn. 一.只有svn的情况        首先考虑没有maven的情况.这样的话,项目组每个开发人员,都需要在本地check out所有的源码. 每次提交之前, ...

  10. Android笔记

    SYSTEM_ALERT_WINDOW and WRITE_SETTINGS, 这两个权限比较特殊,不能通过代码申请方式获取,必须得用户打开软件设置页手动打开,才能授权.路径是:Settings-&g ...