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 border实现图片遮罩效果代码
Apr 09 HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
Feb 24 HTML / CSS
使用CSS3实现多列布局与多背景的技巧
Feb 29 HTML / CSS
利用纯CSS3实现动态的自行车特效源码
Jan 20 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
html5指南-2.如何操作document metadata
Jan 07 HTML / CSS
为你的html5网页添加音效示例
Apr 03 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
Jun 16 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 HTML / CSS
HTML5本地数据库基础操作详解
Apr 26 HTML / CSS
5个HTML5的常用本地存储方式详解与介绍
Mar 27 HTML / CSS
CSS3实现的3D隧道效果
Apr 27 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
论建造顺序的重要性
2020/03/04 星际争霸
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python文件比较示例分享
2014/01/10 Python
Python的动态重新封装的教程
2015/04/11 Python
Python对文件操作知识汇总
2016/05/15 Python
Python在线运行代码助手
2016/07/15 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
浅谈Python 函数式编程
2020/06/20 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
夏季奶茶店创业计划书
2014/01/16 职场文书
中学生学雷锋活动心得体会
2014/03/10 职场文书
竞聘书格式及范文
2014/03/31 职场文书
保护环境的标语
2014/06/09 职场文书
学习张林森心得体会
2014/09/10 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
element多个表单校验的实现
2021/05/27 Javascript
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL