canvas 可以使用浏览器支持的任意格式的外部图片都可以使用,比如PNG、GIF或者JPEG。 甚至可以将同一个页面中其他canvas元素生成的图片作为图片源。
基本步骤
- 获得一个指向HTMLImageElement的对象或者另一个canvas元素的引用作为源,也可以通过提供一个URL的方式来使用图片
- 使用drawImage()函数将图片绘制到画布上
可以使用的图片源
这些源统一由 CanvasImageSource类型来引用。
- HTMLImageElement 这些图片是由Image()函数构造出来的,或者任何的
元素
- HTMLVideoElement 用一个HTML的 元素作为你的图片源,可以从视频中抓取当前帧作为一个图像
- HTMLCanvasElement 可以使用另一个
- ImageBitmap 这是一个高性能的位图,可以低延迟地绘制,它可以从上述的所有源以及其它几种源中生成。
Notice
- 使用相同页面内的图片
- document.images集合
- document.getElementsByTagName()方法
- 如果你知道你想使用的指定图片的ID,你可以用document.getElementById()获得这个图片
- 使用其它域名下的图片
- 在
HTMLImageElement上使用crossOrigin属性,你可以请求加载其它域名上的图片。如果图片的服务器允许跨域访问这个图片,那么你可以使用这个图片而不污染canvas,否则,使用这个图片将会污染canvas。
- 在
- 使用其它 canvas 元素
- 和引用页面内的图片类似地,用 document.getElementsByTagName 或 document.getElementById 方法来获取其它 canvas 元素。但你引入的应该是已经准备好的 canvas。
图片源
// 1. 使用脚本创建图片var img = new Image(); // 创建img元素img.onload = function(){// 执行drawImage语句}img.src = 'myImage.png'; // 设置图片源地址// 通过 data: url 方式嵌入图像img.src = 'data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==';// 使用视频帧function getMyVideo() {var canvas = document.getElementById('canvas');if (canvas.getContext) {var ctx = canvas.getContext('2d');return document.getElementById('myvideo');}}
绘制图片
使用 drawImage(image, x, y) 将图片绘制到 canvas 中;
function draw() {var ctx = document.getElementById('canvas').getContext('2d');var img = new Image();img.onload = function(){ctx.drawImage(img,0,0);ctx.beginPath();ctx.moveTo(30,96);ctx.lineTo(70,66);ctx.lineTo(103,76);ctx.lineTo(170,15);ctx.stroke();}img.src = 'images/backdrop.png';}
