用HTML5 Canvas为Web图形创建特效
HTML5 Canvas 将使用像素在屏幕上绘制图形图像。 本节演示了五种用于操作像素以创建摄影特效的 Canvas 技术。 您可使用这些技术来生成独具特色的图像,为您的网站、博客、视频游戏画面、广告和插图等提供信息或艺术趣味。
本教程包含五个独立的带有注释的代码示例,为您演示了这些技术如何改善一张有关美洲鹰的摄影图像。 这些示例解释了如何执行以下操作: 将美洲鹰的照片放置在一个圆形中;向背景中添加白雪纹理图片;大幅改变色彩构成;使图像变得透明;并将整张图片从彩色变为黑白。
本主题介绍如何使用 HTML5 Canvas 将照片放入不同形状中,并为 Web 设计创建视觉特效。
本主题包含一个独立的带有注释的代码示例,演示如何将一张有关美洲鹰的照片放入到一个圆形形状中。 此代码示例演示了如何使用 Canvas 加载美洲鹰照片并显示在屏幕上。 然后,它演示如何使用 Canvas arc 方法创建一个圆,并围绕美洲鹰添加一个白色圆形框。 此示例末尾的讨论材料将说明有关代码如何工作来开发此技术的更多信息。
Canvas 代码示例讨论:
此讨论解释了此 Canvas 示例的设计和结构以及所有部件如何协同工作。 此示例使用标准 HTML5 标头 ,以便浏览器可以将其作为 HTML5 规范的一部分加以区别。 代码分成两个主要部分:
1、主体代码
2、脚本代码
主体代码
当加载页面时,主体标记使用 onload 函数来调用 displayImage 函数。 将美洲鹰的原始图像加载到主体中,以便您可以将其与要由 Canvas 修改的图像进行比较。 canvas 标记是主体的一部分。 指定了 Canvas 的初始宽度和高度,还指定了 id 特性。 必须使用 ID,才能将 Canvas 元素添加到页面的对象模型中。
脚本代码
脚本代码包括两个函数: displayImage和getColorData。 加载页面时将调用 displayImage 函数。 getColorData 函数是从 displayImage 调用的。 在脚本部分的开头创建一个全局变量以创建一个空白图像文件,稍后将会用到这个文件。
displayImage 函数
加载页面时将调用此函数。 它通过在主体代码中使用 canvas 元素的 ID 来获取画布。 然后,它获取画布的 CanvasRenderingContext2D 对象,使其准备好接受绘制,并使用 DrawImage 将图像加载到上下文中。 在将上下文初始化为二维画布之后,就可以在画布上开始绘制了。
该函数的最后工作是通过提供一条路径来指定图像的来源。 由于图像可能不会立即加载,因此设置了一个事件,以便在图像实际加载之后调用某个函数。 在加载图像之后,将会显示图像,并调用用于完成绘制工作的 changeImage 函数。
changeImage 函数
通过使用 arc 方法围绕图像中心绘制一个圆,从而修改图像。 图像为 200 x 200 像素,圆的半径将为 150 个像素。 因为圆的中心是图像中心,并且圆边框为 100 个像素厚,因此外部边缘上的像素将用白色像素替换。 strokeStyle 属性、lineWidth 属性、beginPath 方法、arc 方法、closePath 方法和 stroke 方法定义这个圆。
代码要求
此代码在 Windows Internet Explorer 9 中运行。 它无法在早期版本的 Windows Internet Explorer 中正常运行,但也许能在支持 HTML5 Canvas 的其他浏览器中运行。
1. [代码][HTML]代码
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
//Global variables
var myImage =
new Image(); // Create a new blank image.
// Load the image and display it.
function displayImage() {
//
Get the canvas element.
canvas = document.getElementById("myCanvas");
// Make sure you got it.
if (canvas.getContext) {
// Specify 2d canvas type.
ctx = canvas.getContext("2d");
// When the image is loaded, draw it.
myImage.onload =
function() {
// Load the image into the context.
ctx.drawImage(myImage, 0, 0);
//
Get
and modify the image data.
changeImage();
}
// Define the source of the image.
myImage.src =
"http://samples.msdn.microsoft.com/workshop/samples/canvas/kestral.png";
}http://www.enterdesk.com/special/sexygirl/
}美女图片
function changeImage() {
ctx.strokeStyle =
"white";
ctx.lineWidth =
"100";
ctx.beginPath();
ctx.arc(100, 100, 150, 0, Math.PI *
2, true);
ctx.closePath();
ctx.stroke();
}
</script>
</head>
<body onload="displayImage()">
<h1>
American Kestral
</h1>
<p>
The original image is
on the left
and the modified image is
on the right.
</p>
<img id="myPhoto" src="http://samples.msdn.microsoft.com/workshop/samples/canvas/kestral.png">
<canvas id="myCanvas" width="200" height="200">
</canvas>
<p>
Public domain image courtesy of U.S. Fish and Wildlife Service.
</p>
</body>
</html>
用HTML5 Canvas为Web图形创建特效的更多相关文章
- HTML5 Canvas彩色小球碰撞运动特效
脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效. 效果展示 http://hovertree.com/texiao/html5/39/ ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...
- 【HTML】html5 canvas全屏烟花动画特效
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- html5 canvas画图之图形随拖动而复制(有操作指示)
学习html5 canvas,写了一个小练习来加深理解,可以实现图形随拖动而复制. <!DOCTYPE html> <html> <head> <meta c ...
- HTML5技术实现Web图形图像处理——WebPhotoshop精简版
WebPhotoshop精简版是利用HTML5技术在Web上实现对图形图像的处理,构建易维护.易共享.易于拓展.实时性的Web图形图像处理平台. 精简版功能包括:图形绘制.图像处理.图像操作.完整版包 ...
- 基于 HTML5 Canvas 实现的文字动画特效
前言 文字是网页中最基本的元素,一般我们在网页上都是展示的静态文字,但是就效果来说,还是比较枯燥的.文字淡入淡出的动画效果在项目中非常实用,如果有某些关键的文字,可以通过这种动态的效果来提醒用户阅读. ...
- 基于HTML5 Canvas粒子效果文字动画特效
之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想要展示的文字,回车后即可在canvas上绘制出粒子效果的 ...
- html5 canvas实现图片玻璃碎片特效
今天要为大家带来一款html5 canvas实现的图片玻璃碎片特效.图片以玻璃碎片的形式出现到界面中,然后似玻璃被打碎的效果渐消息.效果图如下: 在线预览 源码下载 实现代码: html代码: & ...
- 基于 HTML5 Canvas 的 3D 机房创建
对于 3D 机房来说,监控已经不是什么难事,不同的人有不同的做法,今天试着用 HT 写了一个基于 HTML5 的机房,发现果然 HT 简单好用.本例是将灯光.雾化以及 eye 的最大最小距离等等功能在 ...
随机推荐
- Java 浅析,生成OFD文件
摘要:这几天遇到个需要,需要提供用户下载电子证照,最简单的方法实现:word做了一份模板,利用网页工具转成OFD文件,http://www.yozodcs.com/page/example.html用 ...
- 使用sqlalchemy查询并删除数据表的唯一性索引
简单描述表结构,字段类型 desc tabl_name 删除索引:alter table `db`.`table_name` drop index `index_name` 注意里面的特殊符号: ` ...
- 4.【nuxt起步】-具体练习一个h5实例
目标地址:https://www.vyuan8.com/vyuan/plugin.php?id=vyuan_fangchan&module=fangchan&pid=10079& ...
- 计算广告、推荐系统论文以及DSP综述
http://www.huxmarket.com/detail/2966 DSP场景假定前提: 以CTR预估为例,向广告主以CPC(OCPC)方式收费,向ADX以CPM方式付费.投放计划受预算限制,在 ...
- UVA 12338 - Anti-Rhyme Pairs(后缀数组+RMQ)
UVA 12338 - Anti-Rhyme Pairs 题目链接 题意:给定一些字符串,每次询问求出两个字符串的最长公共前缀的长度 思路:把字符串排序,就能求出height和rank数组,然后利用R ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- PHP工作模型与运行机制
PHP的工作模型非常特殊.从某种程度上说,PHP和ASP.ASP.NET.JSP/Servlet等流行的Web技术,有着本质上的区别. 以Java为例,Java在Web应用领域,有两种技术:Jav ...
- Node.js知识点学习
Node.js知识点学习 一.基本概念 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台.可以说,Node.js开创了javascript模块化开发的先河,早期 ...
- 实例讲解SVN分支和合并问题(转)
本节向大家简单描述一下SVN分支和合并方面的知识,在学习SVN的过程中SVN分支和合并时经常遇到的问题,在这里和大家分享一下,希望本文对大家有用. 关于主线同SVN分支合并的概念及如何使用的误区此问题 ...
- Ecilpse绑定jdk的源码
因为近期才入职,所以电脑环境才配好,今天在写代码的时候,想查看源码,发现不能查看,所以在网上百度了一下: 下面是解决方法: 1.在Ecilpse的窗体下,点击Preferences 2.然后点击Jav ...