HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例


Posted in HTML / CSS onFebruary 28, 2016

翻转、移动、平移、放大、缩小

XML/HTML Code复制内容到剪贴板
  1. var canvas = document.getElementById('canvas');   
  2. if (canvas.getContext) {   
  3.     var context = canvas.getContext('2d');   
  4.     // 放大与缩小   
  5.     context.beginPath();   
  6.     context.strokeStyle = "#000000";   
  7.     context.strokeRect(10,10,150,100);   
  8.         
  9.     // 放大3倍   
  10.     context.scale(3,3);   
  11.     context.beginPath();   
  12.     context.strokeStyle = '#cccccc';   
  13.     context.strokeRect(10,10,150,100)   
  14.         
  15.     // 缩小   
  16.     context.scale(0.5,0.5);   
  17.     context.beginPath();   
  18.     context.strokeStyle = '#cccccc';   
  19.     context.strokeRect(10,10,150,100)   
  20.         
  21.      // 翻转   
  22.     var img = new Image();   
  23.     img.src = 'images/1.jpg';   
  24.     img.onload = function(){   
  25.         context.drawImage(img, 10,10);           
  26.         context.scale(1, -1);   
  27.         context.drawImage(img, 0, -500);   
  28.     }   
  29.     // 平移   
  30.     context.beginPath();   
  31.     context.strokeStyle = '#000000';   
  32.     context.strokeRect(10,101,150,100);   
  33.     // x移动 50  y 移动100   
  34.     context.translate(50,100);   
  35.     context.beginPath();   
  36.     context.strokeStyle = '#cccccc';   
  37.     context.strokeRect(10,10,150,100);   
  38.     // 旋转   
  39.     context.beginPath();   
  40.     context.strokeStyle = '#000000';   
  41.     context.strokeRect(200,50,100,50);   
  42.     // 默认旋转是根据0,0中心,使用translate可以按照自己的设置的中心旋转   
  43.     context.translate(250,75);   
  44.        
  45.     context.rotate(45 * Math.PI /180);   
  46.     context.translate(-250, -75);   
  47.   
  48.     context.beginPath();   
  49.     context.strokeStyle = '#cccccc';   
  50.     context.strokeRect(200,50,100,50);   
  51.         
  52.     // transform 矩阵   
  53.     context.beginPath();   
  54.     context.strokeStyle = '#000000';   
  55.     context.strokeRect(10,10,150,100);   
  56.        
  57.     context.transform(3,0,0,3,0,0);   
  58.     context.beginPath();   
  59.     context.strokeStyle = '#cccccc';   
  60.     context.strokeRect(10,10,150,100);   
  61.         
  62. }  

渐变、图像组合效果、颜色翻转

XML/HTML Code复制内容到剪贴板
  1. var canvas = document.getElementById('canvas');   
  2. if (canvas.getContext) {   
  3.     var context = canvas.getContext('2d');   
  4.     // 线性绘制渐变   
  5.     var grd = context.createLinearGradient(0,0,200,100);   
  6.     // postion 必须是0.1-1.0之间的竖直,表示渐变中颜色的地点相对地位,color表示颜色   
  7.     grd.addColorStop(0.1, "#00ff00");   
  8.     grd.addColorStop(0.8, "#ff0000");   
  9.        
  10.     context.fillStyle = grd;   
  11.     context.fillRect(0,0, 200,100);   
  12.     // 径向渐变   
  13.     var grd = context.createRadialGradient(100,100,10,100,100,50);   
  14.     grd.addColorStop(0.1, "#00ff00");   
  15.     grd.addColorStop(0.8, '#ff0000');   
  16.     context.fillStyle = grd;   
  17.     context.fillRect(0,0,200,200);   
  18.     // 图像组合效果   
  19.      context.fillStyle = '#00ff00';   
  20.      context.fillRect(10,10,50,50);   
  21.      // 新绘图   
  22.      //context.globalCompositeOperation  = "source-over";   
  23.      // 只绘制新内容,删除其他所有内容   
  24.      context.globalCompositeOperation = 'copy';   
  25.      // 图形重叠的地方,其颜色值相减后决定   
  26.      context.globalCompositeOperation = 'darker';   
  27.      // 画布上已经有的内容只会载和其他图形重叠的地方保留   
  28.      context.globalCompositeOperation = 'destination-atop';   
  29.      // 参考 http://www.w3school.com.cn/htmldom/prop_canvasrenderingcontext2d_globalcompositeoperation.asp   
  30.      context.beginPath();   
  31.      context.fillStyle = '#ff0000';   
  32.      context.arc(50,50,30,0, 2 * Math.PI);   
  33.      context.fill();   
  34.         
  35.      // 颜色翻转   
  36.      var img = new Image();   
  37.           
  38.      img.src = 'images/1.jpg';   
  39.      img.onload = function(){   
  40.          context.drawImage(img, 0,0, 1, 1);   
  41.          var imgData = context.getImageData(0,0, 1,1);   
  42.          var pixels = imgData.data;   
  43.          console.log(pixels);   
  44.          for(var i = 0n = pixels.length; i < n; i+=4) {   
  45.              pixels[i] = 255 - pixels[i];   
  46.              pixels[i+1] = 255 - pixels[i + 1];   
  47.              pixels[i+2] = 255 - pixels[i + 2];   
  48.          }   
  49.          context.putImageData(imgData, 250, 0);   
  50.      }   
  51. }  
HTML / CSS 相关文章推荐
纯CSS3实现移动端展开和收起效果的示例代码
Apr 26 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 HTML / CSS
html Table 表头固定的实现
Jan 22 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
Jan 09 HTML / CSS
HTML5语音识别标签写法附图
Nov 18 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
Sep 08 HTML / CSS
Adobe Html5 Extension开发初体验图文教程
Nov 14 HTML / CSS
canvas实现二维码和图片合成的示例代码
Aug 01 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
Dec 21 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
Sep 16 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
Jan 25 HTML / CSS
关于HTML编码导致的乱码问题
Sep 04 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
Feb 28 #HTML / CSS
很酷的HTML5电子书翻页动画特效
Feb 25 #HTML / CSS
推荐10个HTML5响应式框架
Feb 25 #HTML / CSS
整理HTML5中支持的URL编码与字符编码
Feb 23 #HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
Feb 22 #HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
Feb 19 #HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
Feb 19 #HTML / CSS
You might like
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
快速开发一个PHP扩展图文教程
2008/12/12 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
php三元运算符知识汇总
2015/07/02 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
jQuery动态添加
2016/04/07 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
python搭建简易服务器分析与实现
2012/12/15 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python lambda表达式用法实例分析
2018/12/25 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
自荐信的禁忌和要点
2013/10/15 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
会计职业生涯规划书
2014/01/13 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
Java无向树分析 实现最小高度树
2022/04/09 Javascript
go goth封装第三方认证库示例详解
2022/08/14 Golang