【HTML】Canvas(3)-绘制图片

开发的游戏的时候,游戏中的地图、背景、任务、物品等都是由图片组成的,本节我们来谈谈在canvas中如何操作图片吧。

canvas中提供了drawImage函数putImageData函数来绘制图片。

drawImage()函数有3种函数原型,语法如下:

drawImage(image,dx,dy);

drawImage(image,dx,dy,dw,dh);

drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh);

参数一image是要绘制的对象,这个参数可以是HTMLImageELement、HTMLCanvasElement、HTMLVideoElement,

dx,dy是image在canvas中定位的坐标值,

dw,dh表示image在canvas中即将绘制的区域(相对dx和dy坐标的偏移量)的宽度和高度值,

sx,sy是image所要绘制的起始位置,

sw,sh是image所要绘制的区域(相对image的sx和sy坐标的偏移量)的宽度和高度值

先准备好HTML部分:

<body>
	img标签<br/>
	<img src="../images/travel.jpg" id="travel" alt="travel" title="travel"/><br/>
	<br/><br/>
	canvas画板<br/>
	<!-- PS:画板要设定宽高值,且要不能小于原图,否则图片会显示不完整 -->
    <canvas id="mycanvas" width="500" height="500">
    	你的浏览器不支持HTML5
    </canvas>
</body>

Javascript部分:

方法一:通过<img>标签来获取

var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');

	//获取图片id,取得图片数据
	var img=document.getElementById('travel');
	//用drawImage()函数将图片绘制到画板上
	ctx.drawImage(img,0,0);

方法二:通过javascript的Image对象来获取

先创建一个Image对象,然后通过设置src属性来载入图片,接着添加onload事件侦听,当图片载入完成时将其绘制到画板上。

var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');

	var img=new Image();
	img.src='../images/travel.jpg';
	img.onload=function(){
		ctx.drawImage(img,0,0);
	};

我们来具体看下drawImage函数的3种函数原型的用法和区别:

var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');
	var image=new Image();
	image.src='../images/travel.jpg';
	image.onload=function(){
		//表示从坐标(0,0)开始绘制整张图片
		ctx.drawImage(image,0,0);

		//表示从坐标(200,0)开始绘制整张图片到长100,宽100的矩形区域内
		ctx.drawImage(image,200,0,100,100);

		//表示截取图片从(50,50)到(100,80)的部分,从坐标(200,110)开始绘制放到长100,宽60的矩形区域内
		ctx.drawImage(image,50,50,100,80,200,110,100,60);
	};

还有一种绘制图片的方法,就是利用getImageData和putImageData绘制图片:

       putImageData(imgdata,dx,dy,sx,sy,sw,sh)函数的7个参数中,imgdata是像素数据,dx,dy是绘制图片的定位坐标值,sx,sy是imgdata所要绘制图片的其实位置,sw,sh是imgdata所要绘制区域(相对imgdata的sx,sy坐标的偏移量)的宽度和高度值。后4个参数可以省略,此时表示绘制整个imgdata

在使用putImageData()前,需先用getImageData(x,y,w,h)函数得到像素数据,即从canvas画板上取得所选区域的像素数据,它的4个参数分别是:选择区域七点的坐标x和坐标y,选择区域的长和宽。

putImageData(imagedata,dx,dy,x,y,w,h)函数则表示将所得到的像素数据描画到canvas画板上形成图形。

var c=document.getElementById('mycanvas');
	var ctx=c.getContext('2d');

	var image=new Image();
	image.src='../images/travel.jpg';
	image.onload=function(){
		ctx.drawImage(image,0,0);
		var imgData=ctx.getImageData(50,50,192,168);
		ctx.putImageData(imgData,200,260);
		ctx.putImageData(imgData,200,260,50,50,100,100);
	};

注:使用getImageData函数获取图片数据,此函数在chrome,Firefox,ie等浏览器中会设计跨域问题,所以无法直接在浏览器中浏览,必须通过服务器来访问测试。

Author:致知

Sign:路漫漫其修远兮,吾将上下而求索。

时间: 2024-10-10 09:41:56

【HTML】Canvas(3)-绘制图片的相关文章

HTML5之canvas 9绘制图片

绘制图片 Var image=new Image(); image.src=” http://img4.duitang.com/uploads/item/201406/25/20140625182321_4MTau.thumb.700_0.jpeg”; image.onload=function(){} Context.drawImage(image,x,y); Context.drawImage(image,x,y,w,h); Context.drawIamge(image,sx,sy,sw,

H5在canvas中绘制图片时候遇到跨域问题

在前端绘制图片时需要用到其他服务器的图片,当然没有读取成功. 在网上一顿搜索,设置了图片允许跨域. img.crossOrigin = "Anonymous" 在调试中也可以看到图片,不过还是绘制失败.经过一波XXX式的试探和查找,找到一个解决方案. 在在iis中配置响应头,可能是之前获取图片的时候没有能够通过允许的类型. Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:origin,x-reques

Canvas中 drawImage绘制图片不显示

在学习 html5中的 Canvas.drawImage时写了如下代码: <!doctype html> <html> <head><title>研究</title></head> <body> <canvas id="canvas" style="width:500px;height:400px; border:1px solid red"></canvas>

canvas 2.0 图片绘制

绘制图片drawImage 2013.02.21 by 十年灯·一条评论 本文属于<html5 Canvas画图系列教程> 这里的绘制图片是指把一张现成的图片,绘制到Canvas上面. 有的人可能就有疑问了,既然是现成的图片,那干嘛用canvas来绘制,直接用img标签展现出来不就行了? canvas上绘制图片,不是用来展示的,canvas功能更强大,比如,把图片画到canvas上,可以像PS中的滤镜一样,对图片进行修改,而且最后还能保存为新图片. 这些操作很复杂,我们先来看最基本的:如何把图

android中Canvas使用drawBitmap绘制图片

1.主要的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float top, Paint paint) 2.对图片剪接和限定显示区域 drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint): Rect src: 是对图片进行裁截,若是空null则显示整个图片 RectF dst:是图片在Canvas画布中显示的

【Canvas】如何用Canvas绘制图片

三种方式绘制图片drawImage() ①drawImage(三个参数) ②drawImage(五三个参数) ③drawImage(九个参数) 原文地址:https://www.cnblogs.com/moveup/p/9736014.html

html5 绘制图片 drawImage

要在绘图上下文中绘制图片,可以使用 drawImage 方法.该方法有三种不同的参数:? drawImage(image,dx,dy)? drawImage(image,dx,dy,dw,dh)? drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)其中的 image 参数可以是 HTMLImageElement.HTMLCanvasElement 和HTMLVideoElement 中的任一个对象.绘制参数的含义可以参看下图: 异常:如果第一个参数不是指定的元素类型

HTML5使用Canvas来绘制图形

一.Canvas标签: 1.HTML5<canvas>元素用于图形的绘制,通过脚本(通常是javascript)来完成. 2.<canvas>标签只是图形容器,必须使用脚本来绘制图形. 3.可以通过多种方法通过Canvas绘制路径.盒.圆.字符以及添加图像. 二.Canvas绘制图形 1.绘制矩形 2.绘制圆形 3.moveTo和lineTo 4.使用bezierCurveTo绘制贝塞尔曲线 5.绘制线性渐变 6.绘制径向渐变 7.绘制变形图形 8.绘制图形合成gloablComp

基于OpenGL编写一个简易的2D渲染框架-04 绘制图片

阅读文章前需要了解的知识,纹理:https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 过程简述:利用 FreeImage 库加载图像数据,再创建 OpenGL 纹理,通过 Canvas2D 画布绘制,最后又 Renderer 渲染器渲染 本来想用 soil 库加载图像数据的,虽然方便,但是加载有些格式的图像文件时会出现一些问题.最后,改用 FreeImage 库来加载图像了. 添加 FreeImage 库到工