在html5中,除了利用canvas绘制矢量图形之外,我们还可以在canvas「画布」上绘制现有的图像文件。
首先,我们来看看使用canvas绘制图像文件需要用到CanvasRenderingContext2D
对象的哪些主要属性和方法:
①drawImage(mixed image, int x, int y)
image
可以是Image
对象,也可以是Canvas
对象(下同)。width
和height
)绘制整个图像,图像将根据指定的尺寸自动进行相应的缩放。(imageX, imageY)
为左上角、宽度为imageWidth
、高度为imageHeight
的矩形部分)绘制到canvas中以(canvasX,canvasY)
为左上角坐标、宽度为canvasWidth
、高度为canvasHeight
的矩形区域中要在canvas中绘制图像,我们可以使用一个名为drawImage()
的方法,不过该方法具有三种不同的变体,每个方法变体允许接收的参数不仅数量不同,连参数的含义也不尽相同。
在这里,我们对上述三种变体分别举例说明。
首先,我们使用drawImage()
的第一个变体在canvas上绘制Google的logo图片(原始尺寸为550 x 190)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5 Canvas绘制图像入门示例</title> </head> <body> <!-- 添加canvas标签,并加上红色边框以便于在页面上查看 --> <canvas id="myCanvas" width="400px" height="300px" style="border: 1px solid red;"> 您的浏览器不支持canvas标签。 </canvas> <script type="text/javascript"> //获取Canvas对象(画布) var canvas = document.getElementById("myCanvas"); //简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误 if(canvas.getContext){ //获取对应的CanvasRenderingContext2D对象(画笔) var ctx = canvas.getContext("2d"); //创建新的图片对象 var img = new Image(); //指定图片的URL img.src = "http://www.365mini.com/image/google_logo.png"; //浏览器加载图片完毕后再绘制图片 img.onload = function(){ //以Canvas画布上的坐标(10,10)为起始点,绘制图像 ctx.drawImage(img, 10, 10); }; } </script> </body> </html>
对应的显示效果如下:
由于Google的Logo图像过大,超过了canvas的尺寸范围,因此只能显示出图像的一部分。此时,我们使用第2个变体将Google的logo图像缩小到指定的宽度和高度,并绘制到canvas中。
<script type="text/javascript"> //获取Canvas对象(画布) var canvas = document.getElementById("myCanvas"); //简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误 if(canvas.getContext){ //获取对应的CanvasRenderingContext2D对象(画笔) var ctx = canvas.getContext("2d"); //创建新的图片对象 var img = new Image(); //指定图片的URL img.src = "http://www.365mini.com/image/google_logo.png"; //浏览器加载图片完毕后再绘制图片 img.onload = function(){ //以Canvas画布上的坐标(10,10)为起始点,绘制图像 //图像的宽度和高度分别缩放到350px和100px ctx.drawImage(img, 10, 10, 350, 100); }; } </script>
我们将Google的logo图像进行缩放后,此时就可以在canvas中看到整个图像了:
最后,我们使用第三个方法变体将Google logo中的"Goo"部分图像绘制到canvas中("Goo"部分的图像大小可以使用Photoshop等工具测量得出,这里直接使用测量后的结果)。
<script type="text/javascript"> //获取Canvas对象(画布) var canvas = document.getElementById("myCanvas"); //简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误 if(canvas.getContext){ //获取对应的CanvasRenderingContext2D对象(画笔) var ctx = canvas.getContext("2d"); //创建新的图片对象 var img = new Image(); //指定图片的URL img.src = "http://www.365mini.com/image/google_logo.png"; //浏览器加载图片完毕后再绘制图片 img.onload = function(){ /* * 将图像左侧的"Goo"部分(即以坐标(0,0)为左上角坐标、宽度为332px、高度为190px的部分图像) * 绘制到canvas中以坐标(10,10)为左上角、宽度为332px、高度为190px的矩形区域 * * canvas绘制图像的目标区域的宽度和高度与截取的部分图像尺寸保持一致, * 就表示不进行缩放,以原始尺寸截取部分图像 */ ctx.drawImage(img, 0, 0, 332, 190, 10, 10, 332, 190); }; } </script>
此时,我们就可以看到canvas中显示的"Goo"局部图像了:
相关推荐
### JavaScript与jQuery结合Canvas绘制图片验证码 #### 一、引言 在Web开发中,为了防止恶意登录或自动化工具的攻击,通常会在登录界面加入图片验证码功能。这不仅可以提高安全性,还能有效避免机器人操作。本篇...
在小程序中,canvas提供了类似HTML5 canvas的功能,如`drawImage`用于绘制图片,`fillText`用于添加文本,以及`strokeRect`用于画矩形等。开发者可以通过这些API在canvas上自由绘制内容。 在描述中提到的“一个json...
### Vue使用Canvas绘制图片 在Vue中使用Canvas绘制图片首先需要通过`<canvas>`元素创建一个画布。然后在Vue组件中通过JavaScript获取这个Canvas的上下文(context)并利用`drawImage`方法将图片绘制到Canvas上。`...
有了图片的尺寸和缩放比例后,可以使用canvas的`drawImage`方法绘制图片。这个方法需要传入源图片对象、起始绘制位置的x、y坐标、以及绘制的宽度和高度。这些参数都需要根据计算出的缩放比例来设定。 4. **保存...
例如,`drawImage`用于绘制图片,`fillText`用于在画布上写入文本,`strokeRect`则可以画出矩形边框。 4. **图片处理**: 由于小程序的网络请求限制,图片通常需要先上传到服务器,然后获取返回的URL才能在canvas...
在这个例子中,`chooseImage`方法触发相册选择图片,`drawImage`方法将图片绘制到Canvas上,`canvasToTempFilePath`方法将Canvas内容转换为临时文件路径,最后`uploadImage`方法将这个临时文件上传到服务器(这里...
接下来,我们讨论如何解决canvas绘制图片模糊的问题。在canvas上绘制高分辨率或者非像素完美尺寸的图片时,可能会导致模糊。以下是一些优化技巧: 1. **缩放比例**:计算合适的缩放比例,使得图片宽度和高度都是整数...
本文主要针对微信小程序Canvas进行图片和文字的绘制,特别是...以上就是微信小程序利用Canvas绘制图片和竖排文字的详细知识点介绍。如果要实现更加复杂的布局和效果,可能还需要对Canvas的更多API进行深入研究和实践。
在用canvas将png图片转jpeg时,发现透明区域被填充成黑色。 代码如下: XML/HTML Code复制内容到剪贴板 <p>Canvas: <canvas u00a0id=canvas style></canvas> <p>Base64转码后的图片: ...
首先,我们来看"vue+canvas绘制图形"这个主题。Vue组件是Vue.js的核心特性之一,它允许我们将UI拆分成独立、可复用的部分。在这个项目中,我们可以创建一个名为`Canvas.vue`的Vue组件,专门负责处理Canvas元素。在`...
2. **图片加载**:在canvas绘制图片时,需要等待图片完全加载后再进行绘制,否则可能会导致图片绘制不完整或变形。 3. **性能优化**:大量的绘图操作可能会影响页面性能,因此需要合理规划绘图流程,避免不必要的重...
1、微信小程序中的canvas绘制图片截图,拿到的图片会模糊? (此图片来源于网络,如有侵权,请联系删除! ) 需求是我在微信小程序中使用canvas把图片绘制到图中黑框区域,然后进行编辑操作最后拿到编辑后的图片,图片...
需要注意的是,在使用Canvas绘制图片时,需要注意图片的跨域问题,以避免图片加载失败。同时,在Java平台上,需要使用Graphics2D类绘制图片,以避免图片加载失败。 本文介绍了使用JavaScript和HTML5 Canvas实现两张...
本版本,使用cropper.js+hammer.js 实现手势旋转拖拽放大缩小图片功能,在截取图片时 清晰度远远大于jcanvas版本.有截取框,点击截取canvas bug 设置截取框cropbox的高度 不能大于图片高度,不知道新版的croppper.js...
本教程将深入探讨如何利用HTML5 Canvas绘制逼真的闪电动画特效,为网页添加炫酷的视觉效果。 首先,我们需要在HTML文档中创建一个`<canvas>`元素,设置其ID以便于JavaScript代码中的引用。例如: ```html <canvas ...
在`img.onload`回调函数中,我们定义了一个`drawBackground`函数,用于在Canvas上绘制背景图片: ```javascript function drawBackground(image) { ctx.drawImage(image, 0, 0, canvas.width, canvas.height); } `...
本文将详细介绍如何使用JavaScript编写一个函数,实现在Canvas上绘制文本内容时自动换行。 首先,我们需要理解Canvas API中的`fillText()`方法,它是用来在Canvas上填充文本的。但这个方法不支持文本换行,所以我们...
Java 通过Canvas实现绘图功能源代码,可以画出直线、矩形、圆角矩形、三角形、文字等,把缓冲区图像的内容绘制到画布上,重载抽象类MIDlet的抽象方法startApp(),重载抽象类MIDlet的方法destroyApp(),Java Canvas...
本文实例为大家分享了HTML5 canvas绘制图片的具体代码,供大家参考,具体内容如下 demo.js [removed]=function() { createcanvas(); drawImage(); } function createcanvas() { var CANVAS=document....