Html5新特性 canvas画板画直线和等比缩放居中裁剪图片
canvas裁剪图片
h5的这个新特性,我们可以使用canvas进行图片的处理,比如裁剪,等比放大或缩小。比如我们有个360x607宽高的目标图,如果上传图片的宽高都大于目标图,我们对目标图等比压缩,然后在剧中裁剪;如果又一边小于,我们就对上传图片等比放大,让其都满足目标大小,再居中裁剪。
第一个参数image可以用HTMLImageElement,HTMLCanvasElement或者HTMLVideoElement作为参数。
<!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画板画直线和等比缩放居中裁剪图片相关推荐
- html5 svg特性,HTML5新特性——HTML 5 Canvas vs. SVG
Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的. SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个 ...
- php 画直线,html5 Canvas实现画直线与设置线条的样式
这篇文章主要介绍了关于html5 Canvas实现画直线与设置线条的样式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 在学画画的时候,线条是最基本的了,而线条的连接可以组成任何图形. ...
- html5加js兼容性辅助,解决低版本IE关于html5新特性的兼容性问题html5shiv.js和Respond.js,以及excanvas.js解决低版本IE不支持canvas的问题...
插件:html5shiv.js 让IE9以下版本支持html5新标签,git地址https://github.com/aFarkas/html5shiv 用于解决IE9以下版本浏览器对HTML5新增标 ...
- html5新特性与用法大全了解一下
有好多小伙伴私聊我问我html5新特性 和用法,下面我给大家具体介绍一下html5都新加了哪些新特性,下面我给大家总结一下. 1)新的语义标签 footer header 等等 2)增强型表单 表单2 ...
- Html5新特性总览
Html5新特性总览 1.HTML5 新元素 标签 描述 < article> 定义页面独立的内容区域. < aside> 定义页面的侧边栏内容. < bdi> 定 ...
- HTML5新特性的学习笔记
HTML5新特性的学习笔记 HTML 超文本标记语言: HyperText Markup Language 这份学习笔记的主要内容是HTML5的新标签 基于菜鸟教程的个人向学习笔记 菜鸟教程 文章目录 ...
- HTML5新特性总结 1
文章目录 HTML5 HTML5 浏览器支持 HTML5新元素 HTML5 Canvas 浏览器支持 创建一个画布(Canvas) 使用 JavaScript 来绘制图像 画线.画圆.写字.渐变效果 ...
- HTML中三维特性,前端进阶系列(三):HTML5新特性
HTML5 是对 HTML 标准的第五次修订.其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入.HTML5 的语法是向后兼容的.现在国内普遍说的 H5 是包 ...
- html5 logo svg,HTML5新特性之用SVG绘制微信logo
html5新特新html5 中的一些有趣的新特性:1.用于绘画的 canvas 元素 2.用于媒介回放的 video 和 audio 元素 3.对本地离线存储的更好的支持 4.新的特殊内容元素,比如 ...
- html5储存类型特点,避免踩雷!你不得不知的 HTML5 “新”特性
什么是 HTML5 HTML的发展历程如下: 产生于1990年 1997年 HTML4 出现,成为互联网开发的标准 2008年,HTML5正式出现,2002年趋于稳定 HTML在发展过程中,HTML4 ...
最新文章
- 写日历的一些总结(二)
- Java基础—异常分类及处理
- kubectl get node运行时出现:Unable to connect to the server: x509: certificate signed by unknown authority
- nginx post请求超时_nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)
- hadoop应用开发技术..._Hadoop
- scrapy中使用css选择器罗列下一级的所有标签
- img2txt(二)
- MyBatis出现红色错误,已解决(Establishing SSL connection without)
- Java Level 2 学习的八大名著
- 面试 其实就是短时间内展现出你最好的自我
- 哈哈哈,看着问题一个个解决,很有满足感哦
- 阿里云云计算6 ECS的概念
- 组态软件调用matlab,()基于OPC的组态软件和MATLAB的通信实现
- asp.net identity 基础概念篇-理解什么是声明
- oracle crm系统叫什么,常用CRM软件有哪些?
- HTML5学堂,感谢您一年的陪伴(上)
- 图片太大怎么压缩变小?
- Virtio 基本概念和设备操作
- The final local variable xxx cannot be assigned, since it is defined in an enclo
- java 文件格式转换
热门文章
- 阿里云云计算 29 AS的原理
- oracle shared_pool_size 0,Oracle 参数shared_pool_size
- 公式推导以及仿真代码的修改 11-28
- 区域增长 matlab,图像分割 区域增长
- 如何使用 python 爬取全国小区名称
- PoisonApple:针对macOS的持久化工具
- 看完不后悔系列,SQL语句执行慢怎么办,原因总结!!
- php 编译安装gd 失败,编译安装php5 解决编译安装的php加载不了gd
- java+log日志实例_java.util.log,使用3个不同的记录器实例/日志文件,获得.1.2等
- oracle建表空间、用户