`
guoyiqi
  • 浏览: 966189 次
社区版块
存档分类
最新评论

在canvas中插入图片

 
阅读更多

在canvas中显示图片非常简单。可以通过修正层为图片添加印章、拉伸图片或者修改图片等,并且图片通常会成为canvas上的焦点。用HTML5 Canvas API内置的几个简单命令可以轻松地为canvas添加图片内容。

不过,图片增加了canvas操作的复杂度:必须等到图片完全加载后才能对其进行操作。浏览器通常会在页面脚本执行的同时异步加载图片。如果试图在图片未完全加载之前就将其呈现到canvas上,那么canvas将不会显示任何图片。因此,开发人员要特别注意,在呈现之前,应确保图片已经加载完毕。

为保证在呈现之前图片已完全加载,我们提供了回调,即仅当图像加载完成时才执行后续代码。

代码加载图像

// 加载图片bark.jpg 

var bark = new Image(); 

bark.src = "bark.jpg";   // 图片加载完成后,将其显示在canvas上 

bark.onload = function () {    drawTrails();  }

 

从上面的代码中可以看到,我们为bark.jpg图片添加了onload处理函数,以保证仅在图像加载完成时才调用主drawTrails函数。这样做可以保证后续的调用能够把图片正常显示出来。

代码在canvas上显示图像

// 用背景图案填充矩形 

context.drawImage(bark, -5, -50, 10, 50);

在这段代码里注意,在drawImage函数中,除了图片本身外,还指定了x、y、width和height参数。这些参数会对贴图进行调整以适应预定的10×50像素区域。我们还可以把原图的尺寸传进来,以便在裁切区域内对图片进行更多控制。

Canvas标记很多年前就被当作一个新的HTML标记成员加入到了HTML5标准中。在此之前,人们要想实现动态的网页应用,只能借助于第三方的插件,比如Flash或Java,而引入了Canvas标记后,人们直接打通了通往神奇的动态应用网页的大门。本教程内容只覆盖了一小部分、但却是非常重要的canvas标记的应用功能——图像显示和处理。

 

图像来源

最常见的在canvas上画图的方法是使用Javascript Image对象。所支持的来源图片格式依赖于浏览器的支持,然而,一些典型的图片格式(png,jpg,gif等)基本上都没有问题。

图片可以从DOM中已经加载的元素中抓取,也可以按需即时创建。

 

// 抓取页面上已有的图片。
var myImage = document.getElementById(‘myimageid’);// 或创建一个新图片。
myImage = new Image();
myImage.src = ‘image.png’;

大多数支持canvas标记的浏览器的当前版本中,当图片还没有加载完成时,如果你要去画它,结果是什么事情都不会发生。也就是说,如果你想画一个图片,你需要等它完全加载。你可以使用图片对象的onload函数来进行判断。

// Create an image.
myImage = new Image();
myImage.onload = function() {
// Draw image.
}
myImage.src = ‘image.png’;

在下面的所有例子中,我们的图片源将会使用这个256×256尺寸的大猩猩。

大猩猩图片源

基本绘画

在最基本的画图操作中,你需要的只是希望图像出现处的位置(x和y坐标)。图像的位置是相对于其左上角来判断的。使用这种方法,图像可以简单的以其原尺寸被画在画布上。

drawImage(image, x, y)
var canvas = document.getElementById(‘myCanvas’);
var ctx = canvas.getContext(’2d’);ctx.drawImage(myImage, 50, 50);
ctx.drawImage(myImage, 125, 125);
ctx.drawImage(myImage, 210, 210);
基本画布绘图输出

缩放及调整尺寸

改变图像的尺寸,你需要使用重载的drawImage函数,提供给它希望的宽度和高度参数。

drawImage(image, x, y, width, height)
var canvas = document.getElementById(‘myCanvas’);
var ctx = canvas.getContext(’2d’);ctx.drawImage(myImage, 50, 50, 100, 100);
ctx.drawImage(myImage, 125, 125, 200, 50);
ctx.drawImage(myImage, 210, 210, 500, 500);

这个例子演示了如何画一个比原图小的图像,一个不同长宽比的图像和一个比原图大的图像的方法。

画布裁剪图像

图像裁剪

最后一个drawImage方法的功用是对图像进行裁剪。

drawImage(image,
sourceX,
sourceY,
sourceWidth,
sourceHeight,
destX,
destY,
destWidth,
destHeight)

参数很多,但基本上你可以把它想成从原图中取出一个矩形区域,然后把它画到画布上目标区域里。

画布裁剪例子
var canvas = document.getElementById(‘myCanvas’);
var ctx = canvas.getContext(’2d’);ctx.drawImage(myImage, 0, 0, 50, 50, 25, 25, 100, 100);
ctx.drawImage(myImage, 125, 125, 100, 100, 125, 125, 150, 150);
ctx.drawImage(myImage, 80, 80, 100, 100, 250, 250, 220, 220);
画布裁剪

这些就是HTML5中的canvas(画布)标记里进行绘图和处理图像的基本操作。绘图只是canvas能提供的功能之一,将来我们会发布更多的关于这方面的教程,会介绍关于这个标记的更多的特征和功能。如果你有任何的问题和想法,请在下面评论的写出来。

分享到:
评论

相关推荐

    详解canvas drawImage()方法绘制图片不显示的问题

    主要介绍了详解canvas drawImage()方法绘制图片不显示的问题的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    带你使用canvas制作马赛克&canvas飞鸟动画&小球动画

    文章目录canvas制作马赛克&飞鸟动画&小球拖拽动画一、了解单像素操作1、在canvas中的像素操作2、得到场景像素数据3、ImageData对象4、在场景中写入像素数据5、创建一个ImageData对象二、canvas使用图片1、在canvas中...

    android canvas 画图

    使用Android canvas 画图,供入门参考。图例见:http://blog.csdn.net/u010351494/article/details/46443351

    完整版《HTML5高级程序设计》2

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 2.3 使用...

    完整版《HTML5高级程序设计》4

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 2.3 使用...

    完整版《HTML5高级程序设计》5

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 2.3 使用...

    完整版《HTML5高级程序设计》3

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 2.3 使用...

    HTML5高级程序设计

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 canvas变换 42 2.2.14 canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 canvas的安全机制 48 ...

    HTML5高级程序设计.part5

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 ...

    HTML5高级程序设计.part4

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 ...

    HTML5高级程序设计.part1

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 ...

    HTML5高级程序设计.part2

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 ...

    HTML5高级程序设计.part3

    2.2.9 在canvas中插入图片 36 2.2.10 渐变 37 2.2.11 背景图 39 2.2.12 缩放canvas对象 41 2.2.13 Canvas变换 42 2.2.14 Canvas文本 43 2.2.15 应用阴影 45 2.2.16 像素数据 46 2.2.17 Canvas的安全机制 48 ...

    HTML5程序设计(第2版).[荷]Peter Lubbers(带详细书签).pdf

    2.2.9 在canvas中插入图片 37 2.2.10 渐变 38 2.2.11 背景图 40 2.2.12 缩放canvas对象 42 2.2.13 Canvas变换 43 2.2.14 Canvas文本 45 2.2.15 应用阴影 46 2.2.16 像素数据 48 2.2.17 Canvas的安全机制 50...

    基于C#开发的图像绘制、Canvas绘图及图片处理应用开发

    功能包含:绘制线段、矩形、椭圆形、控制粗细、调整颜色、旋转图形、平移图形、缩放图形,满足填充颜色、插入图片、另存为、暗角、降低亮度、灰度、浮雕、马赛克、锯齿等操作。资源包含:演示视频,项目源代码

    利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解

    将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页、编辑器中。 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地方。 将图片转换成base64编码的,在web...

    小程序用Canvas给图片加水印,拼接图片,制作名片

    Canvas是微信小程序中的一个原生组件,因此我们在使用它的时候要特别注意微信小程序对原生组件的使用说明。canvas这个组件其实就是一个画布,你可以在上面画很多你用其他方式不好实现的内容。下面我就将介绍一下怎么...

    Vue使用Canvas绘制图片、矩形、线条、文字,下载图片

    主要介绍了Vue使用Canvas绘制图片、矩形、线条、文字,下载图片的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    Delphi 源代码,在 IntraWeb 中显示图片数据.rar

    Delphi 源代码,在 IntraWeb 中显示图片数据,IntraWeb是一款在Delphi中进行WEB开发的框架,扩展了Delphi的功能。本实例通过IntraWeb框架在Delphi中显示图片,一个有意思的应用,增进你的Delphi编程知识,有必要一看...

    微信小程序canvas.drawImage完全显示图片问题的解决

    主要介绍了微信小程序canvas.drawImage完全显示图片问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Global site tag (gtag.js) - Google Analytics