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图形创建特效的更多相关文章

  1. HTML5 Canvas彩色小球碰撞运动特效

    脚本简介 HTML5 Canvas彩色小球碰撞运动特效是一款基于canvas加面向对象制作的运动小球动画特效.   效果展示 http://hovertree.com/texiao/html5/39/ ...

  2. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

  3. 【HTML】html5 canvas全屏烟花动画特效

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  4. html5 canvas画图之图形随拖动而复制(有操作指示)

    学习html5 canvas,写了一个小练习来加深理解,可以实现图形随拖动而复制. <!DOCTYPE html> <html> <head> <meta c ...

  5. HTML5技术实现Web图形图像处理——WebPhotoshop精简版

    WebPhotoshop精简版是利用HTML5技术在Web上实现对图形图像的处理,构建易维护.易共享.易于拓展.实时性的Web图形图像处理平台. 精简版功能包括:图形绘制.图像处理.图像操作.完整版包 ...

  6. 基于 HTML5 Canvas 实现的文字动画特效

    前言 文字是网页中最基本的元素,一般我们在网页上都是展示的静态文字,但是就效果来说,还是比较枯燥的.文字淡入淡出的动画效果在项目中非常实用,如果有某些关键的文字,可以通过这种动态的效果来提醒用户阅读. ...

  7. 基于HTML5 Canvas粒子效果文字动画特效

    之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想要展示的文字,回车后即可在canvas上绘制出粒子效果的 ...

  8. html5 canvas实现图片玻璃碎片特效

    今天要为大家带来一款html5 canvas实现的图片玻璃碎片特效.图片以玻璃碎片的形式出现到界面中,然后似玻璃被打碎的效果渐消息.效果图如下: 在线预览   源码下载 实现代码: html代码: & ...

  9. 基于 HTML5 Canvas 的 3D 机房创建

    对于 3D 机房来说,监控已经不是什么难事,不同的人有不同的做法,今天试着用 HT 写了一个基于 HTML5 的机房,发现果然 HT 简单好用.本例是将灯光.雾化以及 eye 的最大最小距离等等功能在 ...

随机推荐

  1. BZOJ3295动态逆序对

    一道比较傻的CDQ分治 CDQ: 主要用于解决三位偏序的问题 #include<cstdio> #include<cctype> #include<algorithm&g ...

  2. Maven出现User setting file does not exist ...\.m2\setting.xml的问题解决(同时也解决用户.m2目录下无setting.xml文件)

    如果Eclipse中出现User setting file does not exist ...\.m2\setting.xml这样的问题,解决方法如下: 1.拷贝%M2_HOME%/conf/set ...

  3. weblogic日志管理

    服务器日志  每个 WebLogic Server 实例将来自子系统和应用程序的所有消息写入位于本地主机上的服务器日志文件.默认情况下,服务器日志文件位于服务器实例根目录下的 logs 目录中: 例如 ...

  4. 为什么硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录"shen1": 设备上没有空间

    现象:df -h显示硬盘还有14G空间,但是touch file/mkdir directory都失败,提示硬盘没有空间 原因:df -ia查看下inode的使用情况,发现已经爆了,(下图显示使用88 ...

  5. iOS开发 使用Cocoapods管理第三方类库

    每次上github看到一些优秀的代码,总能看到Podfile,也了解是个管理第三方类库的,今天抽时间学习了一下,挺简单的! 作用:      太多  还是复制一下把!!! CocoaPods是什么? ...

  6. 机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)

    http://antkillerfarm.github.io/ 向量的范数(续) 范数可用符号∥x∥λ表示. 经常使用的有: ∥x∥1=|x1|+⋯+|xn| ∥x∥2=x21+⋯+x2n−−−−−− ...

  7. drag-html

    <!doctype html><html><head><meta charset="UTF-8" /><title>Ca ...

  8. selector在手机上或浏览器显示各种姿势(虚拟下拉菜单)

    测试机型:小米.华为.苹果 测试浏览器:Chrome.Safari.Firefox 最后的结果就是你搞你的,我搞我的! 我认为这样漂亮,你认为那样漂亮(我认为你们都统一!) 因为项目时间紧,所以直接用 ...

  9. python(29)- 面向对象练习Ⅲ

    题目: 基于授权定制自己的列表类型,要求定制的自己的__init__方法,   定制自己的append:只能向列表加入字符串类型的值      定制显示列表中间那个值的属性(提示:property)  ...

  10. vs2012 MinGW 编译ffmeg 引用外部库libx264,librtmp

    VS2012如何编译ffmpeg前面已经有文章讲过,本来主要讲述如何引用外部库libx264,librtmp, ffmpeg版本是3.0.2. 1. 下载x264源文件并编译 源码地址是http:// ...