在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与HTML5 Canvas绘制图片方法详解 #### 一、引言 随着Web技术的不断发展,HTML5成为了构建现代Web应用的重要基石之一。其中,`<canvas>`元素为Web开发者提供了一个强大的绘图功能,使得在网页上进行...
### 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还支持路径绘制、渐变、阴影、文字以及图片滤镜等功能,这些都是DIY图片时可能会用到的。例如,可以创建一个渐变背景: ```javascript var gradient = ctx.createLinearGradient(0, 0, ...
具有如下特性简单易用 —— 一个 json 搞定绘制图片功能全 —— 满足 90% 的使用场景绘制文本(换行、超出内容省略号、中划线、下划线、文本加粗)绘制图片绘制矩形保存图片多图绘制...代码量小体验git clone ...
有了图片的尺寸和缩放比例后,可以使用canvas的`drawImage`方法绘制图片。这个方法需要传入源图片对象、起始绘制位置的x、y坐标、以及绘制的宽度和高度。这些参数都需要根据计算出的缩放比例来设定。 4. **保存...
例如,`drawImage`用于绘制图片,`fillText`用于在画布上写入文本,`strokeRect`则可以画出矩形边框。 4. **图片处理**: 由于小程序的网络请求限制,图片通常需要先上传到服务器,然后获取返回的URL才能在canvas...
在这个例子中,`chooseImage`方法触发相册选择图片,`drawImage`方法将图片绘制到Canvas上,`canvasToTempFilePath`方法将Canvas内容转换为临时文件路径,最后`uploadImage`方法将这个临时文件上传到服务器(这里...
本文主要针对微信小程序Canvas进行图片和文字的绘制,特别是...以上就是微信小程序利用Canvas绘制图片和竖排文字的详细知识点介绍。如果要实现更加复杂的布局和效果,可能还需要对Canvas的更多API进行深入研究和实践。
接下来,我们讨论如何解决canvas绘制图片模糊的问题。在canvas上绘制高分辨率或者非像素完美尺寸的图片时,可能会导致模糊。以下是一些优化技巧: 1. **缩放比例**:计算合适的缩放比例,使得图片宽度和高度都是整数...
首先,我们来看"vue+canvas绘制图形"这个主题。Vue组件是Vue.js的核心特性之一,它允许我们将UI拆分成独立、可复用的部分。在这个项目中,我们可以创建一个名为`Canvas.vue`的Vue组件,专门负责处理Canvas元素。在`...
2. **图片加载**:在canvas绘制图片时,需要等待图片完全加载后再进行绘制,否则可能会导致图片绘制不完整或变形。 3. **性能优化**:大量的绘图操作可能会影响页面性能,因此需要合理规划绘图流程,避免不必要的重...
在微信小程序中,Canvas是用于绘制图形的重要组件。它提供了丰富的绘图API,允许开发者进行动态的、交互式的图形绘制,比如制作图表、游戏、手绘板等。本篇文章将详细探讨如何在微信小程序中利用Canvas实现画图功能...
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); } `...
在用canvas将png图片转jpeg时,发现透明区域被填充成黑色。 代码如下: XML/HTML Code复制内容到剪贴板 <p>Canvas: <canvas u00a0id=canvas style></canvas> <p>Base64转码后的图片: ...