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';
}