`

canvas绘制图片

阅读更多

在html5中,除了利用canvas绘制矢量图形之外,我们还可以在canvas「画布」上绘制现有的图像文件。

 

首先,我们来看看使用canvas绘制图像文件需要用到CanvasRenderingContext2D对象的哪些主要属性和方法:

 

   ①drawImage(mixed image, int x, int y)

以canvas上指定的坐标点开始,按照图像的原始尺寸大小绘制整个图像。这里的image可以是Image对象,也可以是Canvas对象(下同)。
②drawImage(mixed image, int x, int y, int width, int height)
以canvas上指定的坐标点开始,以指定的大小(widthheight)绘制整个图像,图像将根据指定的尺寸自动进行相应的缩放。
    ③drawImage(mixed image, int imageX, int imageY, int imageWidth, int imageHeight, int canvasX, int canvasY, int canvasWidth, int canvasHeight)
将指定图像的局部图像(以(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>

 

对应的显示效果如下:

使用canvas绘制Google的logo图像使用canvas绘制Google的logo图像

 

由于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中看到整个图像了:

 

canvas-draw-image-2.pngcanvas-draw-image-2.png

 

最后,我们使用第三个方法变体将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"局部图像了:

使用canvas绘制Google logo的使用canvas绘制Google logo的

分享到:
评论

相关推荐

    【JavaScript源代码】jquery canvas绘制图片验证码实例.docx

    ### JavaScript与jQuery结合Canvas绘制图片验证码 #### 一、引言 在Web开发中,为了防止恶意登录或自动化工具的攻击,通常会在登录界面加入图片验证码功能。这不仅可以提高安全性,还能有效避免机器人操作。本篇...

    微信小程序上canvas绘制图片助手一个json就制作分享朋友圈图片

    在小程序中,canvas提供了类似HTML5 canvas的功能,如`drawImage`用于绘制图片,`fillText`用于添加文本,以及`strokeRect`用于画矩形等。开发者可以通过这些API在canvas上自由绘制内容。 在描述中提到的“一个json...

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

    ### Vue使用Canvas绘制图片 在Vue中使用Canvas绘制图片首先需要通过`&lt;canvas&gt;`元素创建一个画布。然后在Vue组件中通过JavaScript获取这个Canvas的上下文(context)并利用`drawImage`方法将图片绘制到Canvas上。`...

    微信小程序 实现canvas按照原图等比例不失真绘制海报图并保存海报图片到本地相册

    有了图片的尺寸和缩放比例后,可以使用canvas的`drawImage`方法绘制图片。这个方法需要传入源图片对象、起始绘制位置的x、y坐标、以及绘制的宽度和高度。这些参数都需要根据计算出的缩放比例来设定。 4. **保存...

    小程序canvasDemo

    例如,`drawImage`用于绘制图片,`fillText`用于在画布上写入文本,`strokeRect`则可以画出矩形边框。 4. **图片处理**: 由于小程序的网络请求限制,图片通常需要先上传到服务器,然后获取返回的URL才能在canvas...

    微信小程序使用canvas绘图并且把图片上传到服务器上面.rar

    在这个例子中,`chooseImage`方法触发相册选择图片,`drawImage`方法将图片绘制到Canvas上,`canvasToTempFilePath`方法将Canvas内容转换为临时文件路径,最后`uploadImage`方法将这个临时文件上传到服务器(这里...

    Node+canvas实现图片下载功能(解决绘制图片模糊的问题)nodeTest.zip

    接下来,我们讨论如何解决canvas绘制图片模糊的问题。在canvas上绘制高分辨率或者非像素完美尺寸的图片时,可能会导致模糊。以下是一些优化技巧: 1. **缩放比例**:计算合适的缩放比例,使得图片宽度和高度都是整数...

    微信小程序利用Canvas绘制图片和竖排文字详解

    本文主要针对微信小程序Canvas进行图片和文字的绘制,特别是...以上就是微信小程序利用Canvas绘制图片和竖排文字的详细知识点介绍。如果要实现更加复杂的布局和效果,可能还需要对Canvas的更多API进行深入研究和实践。

    解决canvas转base64/jpeg时透明区域变成黑色背景的方法

    在用canvas将png图片转jpeg时,发现透明区域被填充成黑色。 代码如下: XML/HTML Code复制内容到剪贴板 &lt;p&gt;Canvas:  &lt;canvas u00a0id=canvas style&gt;&lt;/canvas&gt;    &lt;p&gt;Base64转码后的图片:  ...

    vue+canvas绘制图形

    首先,我们来看"vue+canvas绘制图形"这个主题。Vue组件是Vue.js的核心特性之一,它允许我们将UI拆分成独立、可复用的部分。在这个项目中,我们可以创建一个名为`Canvas.vue`的Vue组件,专门负责处理Canvas元素。在`...

    uniapph5 生成邀新海报(canvas绘制海报和二维码,两者拼接)

    2. **图片加载**:在canvas绘制图片时,需要等待图片完全加载后再进行绘制,否则可能会导致图片绘制不完整或变形。 3. **性能优化**:大量的绘图操作可能会影响页面性能,因此需要合理规划绘图流程,避免不必要的重...

    微信小程序开发问答《七十六》canvas绘制图片模糊 & Math.js如何引入 ...

    1、微信小程序中的canvas绘制图片截图,拿到的图片会模糊? (此图片来源于网络,如有侵权,请联系删除! ) 需求是我在微信小程序中使用canvas把图片绘制到图中黑框区域,然后进行编辑操作最后拿到编辑后的图片,图片...

    js+canvas实现两张图片合并成一张图片的方法.docx

    需要注意的是,在使用Canvas绘制图片时,需要注意图片的跨域问题,以避免图片加载失败。同时,在Java平台上,需要使用Graphics2D类绘制图片,以避免图片加载失败。 本文介绍了使用JavaScript和HTML5 Canvas实现两张...

    canvas 手势拖拽旋转放大 crop截取图片 头像上传高清版本 (Tomcat 测试)

    本版本,使用cropper.js+hammer.js 实现手势旋转拖拽放大缩小图片功能,在截取图片时 清晰度远远大于jcanvas版本.有截取框,点击截取canvas bug 设置截取框cropbox的高度 不能大于图片高度,不知道新版的croppper.js...

    html5 canvas绘制逼真的闪电动画特效

    本教程将深入探讨如何利用HTML5 Canvas绘制逼真的闪电动画特效,为网页添加炫酷的视觉效果。 首先,我们需要在HTML文档中创建一个`&lt;canvas&gt;`元素,设置其ID以便于JavaScript代码中的引用。例如: ```html &lt;canvas ...

    html5 canvas自动绘制背景图片效果代码

    在`img.onload`回调函数中,我们定义了一个`drawBackground`函数,用于在Canvas上绘制背景图片: ```javascript function drawBackground(image) { ctx.drawImage(image, 0, 0, canvas.width, canvas.height); } `...

    canvas绘制文本内容自动换行的实现代码

    本文将详细介绍如何使用JavaScript编写一个函数,实现在Canvas上绘制文本内容时自动换行。 首先,我们需要理解Canvas API中的`fillText()`方法,它是用来在Canvas上填充文本的。但这个方法不支持文本换行,所以我们...

    Java 通过Canvas实现绘图功能.rar

    Java 通过Canvas实现绘图功能源代码,可以画出直线、矩形、圆角矩形、三角形、文字等,把缓冲区图像的内容绘制到画布上,重载抽象类MIDlet的抽象方法startApp(),重载抽象类MIDlet的方法destroyApp(),Java Canvas...

    js HTML5 canvas绘制图片的方法

    本文实例为大家分享了HTML5 canvas绘制图片的具体代码,供大家参考,具体内容如下 demo.js [removed]=function() { createcanvas(); drawImage(); } function createcanvas() { var CANVAS=document....

Global site tag (gtag.js) - Google Analytics