边玩边学HTML5(5):图像和字体

一、创建图像对象

在 HTML5 中,Image 对象对应着一幅图片,想要获取一个图像对象,有以下几种方法:

1) 通过 document.images 集合、document.getElementsByTagName 方法或者 document.getElementById 方法来获取网页内已经存在的图片对象;

2) 用 document.getElementsByTagNamedocument.getElementById 方法来获取另外一个 Canvas 对象,将这个 Canvas 对象作为一个图像对象;

3) 最常用的方法:创建一个新的空 Image 对象,给他一个图片的超链接,代码如下:

1
2
3
4
//创建一个空图像对象
var img = new Image();
//给图像对象一个图片超链接
img.src = 'myImage.png';

4) 最后一种是通过 data: url 方式嵌入图像,这种方法很奇妙,他可以用一个很长的字符串来表示一幅图像。

那么这个很长的字符串是怎么来的呢?他是把真正的图像文件(bmp jpg 等等)通过 Base64 编码而来,具体的编码程序网上能搜索到很多。

用这种方式的好处就是,图片资源始终内嵌在 HTML 网页文件中,缺点是数据量太大,而且图片没办法缓存,导致网页文件打开速度变慢 

下面的字符串就是一幅美女图片的 Base64 编码的一小段,让大家看看是什么样子的:

/9j/4QDfRXhpZgAASUkqAAgAAAAFABIBAwABAAAAAQAAADEBAgAVAAAASgAAADIBAgAUAAAAXw

这些乱七八糟的东西就包含了美女图片的一小部分内容了,后面我们将把它绘制到 Canvas 上

二、绘制图像对象

我们得到一个图像对象后,它只是在内存中,我们怎么才能将它绘制到画布上呢? 上下文对象有一个绘制图像对象的方法:

drawImage(image, x, y)

简单吧?image 就是你事先准备好的图像对象,x, y 就是图像左上角放置的位置 ,这个方法调用后,你的图像就会出现在 Canvas 上了

下面我们来把上面的美女图像绘制出来,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<canvas id="canvas1" width="250" height="300" style="background-color:black">
    你的浏览器不支持 &lt;canvas&gt;标签,请使用 Chrome 浏览器 或者 FireFox 浏览器
</canvas><br/>
<input type="button" value="显示美女" onclick="Show();" />
<input type="button" value="清空" onclick="Clear();" />
 
<script type="text/javascript">
    //美女图的 Base64 编码
 
    IMG_SRC='data:image/gif;base64,/9j/4QDfRXhpZgAASUkqAAgAAAA......'//省略40字节
    //缩小版本的美女图
    IMG_SRC_SMALL='data:image/gif;base64,/9j/4QDfRXhpZgAASUkqAAgAAAA......'//省略40字节
 
    function Show(){
        //获取画布对象
        ctx = document.getElementById("canvas1").getContext("2d");
        //创建图像对象
        img=new Image();
        //图像被装入后触发
        img.onload=function(){
            ctx.drawImage(img,0,0);
        }
        //指定图像源
        img.src=IMG_SRC;   
    }  
 
    function Clear(){
        //清除画布
        ctx = document.getElementById("canvas1").getContext("2d");
        ctx.clearRect(0,0,250,300);
    }  
</script>

效果如下:

你还可修改部分代码再运行看看哦

版权所有:为网站而疯狂-给站长一个五星级的家转载请注明来源,谢谢!

还不快抢沙发       我也不甘寂寞

欢迎留言

友情提示:
1、请勿发表色情、违法、商业广告等信息,谢谢。
2、留言想要有头像?请看 “我” 的。