下面介绍一下canvas的几种使用方法,画直线和裁剪图片;

canvas裁剪图片

h5的这个新特性,我们可以使用canvas进行图片的处理,比如裁剪,等比放大或缩小。比如我们有个360x607宽高的目标图,如果上传图片的宽高都大于目标图,我们对目标图等比压缩,然后在剧中裁剪;如果又一边小于,我们就对上传图片等比放大,让其都满足目标大小,再居中裁剪。

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

第一个参数image可以用HTMLImageElement,HTMLCanvasElement或者HTMLVideoElement作为参数。

所以canvas既可以操作canvas,image,video。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>canvas裁剪图片</title>
<script type="text/javascript" src="jquery-2.1.0.min.js"></script>
</head><body >
<div><img id="orgimg" src="352x220.jpg" alt="" /><img id="objimg" src="352x220.jpg" alt="" style="border: 1px solid blue;"/><!-- 添加canvas标签,并加上红色边框以便于在页面上查看 --><canvas id="myCanvas" style="border: 1px solid red;"></canvas>
</div><script type="text/javascript">var img = document.getElementById("orgimg");var mwidth = 360;//目标宽度var mhigth = 607;//目标高度var img_width = img.width; //原图片宽var img_height = img.height; //原图片高var r = 0; //压缩比var wtemp = img_width, htemp = img_height;  //放大或缩小之后暂存图var objimg = document.getElementById("objimg"); //暂存图drawImage();function drawImage(){//获取Canvas对象(画布)var canvas = document.getElementById("myCanvas");//简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误if(canvas.getContext){  //获取对应的CanvasRenderingContext2D对象(画笔)if(img_width == mwidth && img_height == mhigth){}else if(img_width > mwidth && img_height > mhigth){//宽高都大于目标图,需要等比压缩r = img_width / mwidth;if((img_height / r) < mhigth){r = img_height / mhigth;}wtemp = Math.ceil(img_width / r);htemp = Math.ceil(img_height / r);resizeImage(wtemp, htemp);}else{ //只要一边小于,就需要等比放大if(img_width < mwidth && img_height < mhigth){//宽高都小于r = mwidth / img_width;if((img_height * r) < mhigth){r = mhigth / img_height;}}else{if(img_width < mwidth){ //宽小于r = mwidth / img_width;}else{ //高小于r = mhigth / img_height;}}wtemp = Math.ceil(img_width * r);htemp = Math.ceil(img_height * r);resizeImage(wtemp, htemp);}canvas.width = mwidth;canvas.height = mhigth;canvas.getContext('2d').drawImage(objimg, (objimg.width - mwidth)/2, (objimg.height - mhigth)/2, mwidth, mhigth, 0, 0, mwidth, mhigth);}}function resizeImage(w, h){ //重置大小var canvas1 = document.getElementById("myCanvas");canvas1.width = w;canvas1.height = h;canvas1.getContext('2d').drawImage(objimg, 0, 0, canvas1.width, canvas1.height);   $("#objimg").attr('src', canvas1.toDataURL("image/jpg"));}
</script>
</body>
</html>

效果如下图:

2、canvas标签画多条直线

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>canvas画直线</title>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script><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");//线条的颜色ctx.strokeStyle="#FF9933";//线条的宽度像素ctx.lineWidth=10;//线条的两关形状ctx.lineCap="round";//注意,Canvas的坐标系是:Canvas画布的左上角为原点(0,0),向右为横坐标,向下为纵坐标,单位是像素(px)。//开始一个新的绘制路径ctx.beginPath();//定义直线的起点坐标为(10,10)ctx.moveTo(50, 50);//定义直线的终点坐标为(50,10)ctx.lineTo(350, 250);ctx.moveTo(50, 240);ctx.lineTo(360, 60);ctx.moveTo(50, 200);ctx.lineTo(300, 40);//沿着坐标点顺序的路径绘制直线ctx.stroke();//关闭当前的绘制路径ctx.closePath();
}
</script>
</body>
</html>

Html5新特性 canvas画板画直线和等比缩放居中裁剪图片相关推荐

  1. html5 svg特性,HTML5新特性——HTML 5 Canvas vs. SVG

    Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的. SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个 ...

  2. php 画直线,html5 Canvas实现画直线与设置线条的样式

    这篇文章主要介绍了关于html5 Canvas实现画直线与设置线条的样式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 在学画画的时候,线条是最基本的了,而线条的连接可以组成任何图形. ...

  3. html5加js兼容性辅助,解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js,以及excanvas.js解决低版本IE不支持canvas的问题...

    插件:html5shiv.js 让IE9以下版本支持html5新标签,git地址https://github.com/aFarkas/html5shiv 用于解决IE9以下版本浏览器对HTML5新增标 ...

  4. html5新特性与用法大全了解一下

    有好多小伙伴私聊我问我html5新特性 和用法,下面我给大家具体介绍一下html5都新加了哪些新特性,下面我给大家总结一下. 1)新的语义标签 footer header 等等 2)增强型表单 表单2 ...

  5. Html5新特性总览

    Html5新特性总览 1.HTML5 新元素 标签 描述 < article> 定义页面独立的内容区域. < aside> 定义页面的侧边栏内容. < bdi> 定 ...

  6. HTML5新特性的学习笔记

    HTML5新特性的学习笔记 HTML 超文本标记语言: HyperText Markup Language 这份学习笔记的主要内容是HTML5的新标签 基于菜鸟教程的个人向学习笔记 菜鸟教程 文章目录 ...

  7. HTML5新特性总结 1

    文章目录 HTML5 HTML5 浏览器支持 HTML5新元素 HTML5 Canvas 浏览器支持 创建一个画布(Canvas) 使用 JavaScript 来绘制图像 画线.画圆.写字.渐变效果 ...

  8. HTML中三维特性,前端进阶系列(三):HTML5新特性

    HTML5 是对 HTML 标准的第五次修订.其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入.HTML5 的语法是向后兼容的.现在国内普遍说的 H5 是包 ...

  9. html5 logo svg,HTML5新特性之用SVG绘制微信logo

    html5新特新html5 中的一些有趣的新特性:1.用于绘画的 canvas 元素 2.用于媒介回放的 video 和 audio 元素 3.对本地离线存储的更好的支持 4.新的特殊内容元素,比如 ...

  10. html5储存类型特点,避免踩雷!你不得不知的 HTML5 “新”特性

    什么是 HTML5 HTML的发展历程如下: 产生于1990年 1997年 HTML4 出现,成为互联网开发的标准 2008年,HTML5正式出现,2002年趋于稳定 HTML在发展过程中,HTML4 ...

最新文章

  1. 写日历的一些总结(二)
  2. Java基础—异常分类及处理
  3. kubectl get node运行时出现:Unable to connect to the server: x509: certificate signed by unknown authority
  4. nginx post请求超时_nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
  5. hadoop应用开发技术..._Hadoop
  6. scrapy中使用css选择器罗列下一级的所有标签
  7. img2txt(二)
  8. MyBatis出现红色错误,已解决(Establishing SSL connection without)
  9. Java Level 2 学习的八大名著
  10. 面试 其实就是短时间内展现出你最好的自我
  11. 哈哈哈,看着问题一个个解决,很有满足感哦
  12. 阿里云云计算6 ECS的概念
  13. 组态软件调用matlab,()基于OPC的组态软件和MATLAB的通信实现
  14. asp.net identity 基础概念篇-理解什么是声明
  15. oracle crm系统叫什么,常用CRM软件有哪些?
  16. HTML5学堂,感谢您一年的陪伴(上)
  17. 图片太大怎么压缩变小?
  18. Virtio 基本概念和设备操作
  19. The final local variable xxx cannot be assigned, since it is defined in an enclo
  20. java 文件格式转换

热门文章

  1. 阿里云云计算 29 AS的原理
  2. oracle shared_pool_size 0,Oracle 参数shared_pool_size
  3. 公式推导以及仿真代码的修改 11-28
  4. 区域增长 matlab,图像分割 区域增长
  5. 如何使用 python 爬取全国小区名称
  6. PoisonApple:针对macOS的持久化工具
  7. 看完不后悔系列,SQL语句执行慢怎么办,原因总结!!
  8. php 编译安装gd 失败,编译安装php5 解决编译安装的php加载不了gd
  9. java+log日志实例_java.util.log,使用3个不同的记录器实例/日志文件,获得.1.2等
  10. oracle建表空间、用户