您现在的位置是:网站首页> 编程资料编程资料
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例详解如何用HTML5 Canvas API控制图片的缩放变换通过Canvas及File API缩放并上传图片完整示例Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公
                    
                
                2021-08-31
                1069人已围观
            
简介 这篇文章主要介绍了HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例,充分利用到了坐标的操作,说明都写在代码注释里了很简明,需要的朋友可以参考下
翻转、移动、平移、放大、缩小
XML/HTML Code复制内容到剪贴板
- var canvas = document.getElementById('canvas');
 - if (canvas.getContext) {
 - var context = canvas.getContext('2d');
 - // 放大与缩小
 - context.beginPath();
 - context.strokeStyle = "#000000";
 - context.strokeRect(10,10,150,100);
 - // 放大3倍
 - context.scale(3,3);
 - context.beginPath();
 - context.strokeStyle = '#cccccc';
 - context.strokeRect(10,10,150,100)
 - // 缩小
 - context.scale(0.5,0.5);
 - context.beginPath();
 - context.strokeStyle = '#cccccc';
 - context.strokeRect(10,10,150,100)
 - // 翻转
 - var img = new Image();
 - img.src = 'images/1.jpg';
 - img.onload = function(){
 - context.drawImage(img, 10,10);
 - context.scale(1, -1);
 - context.drawImage(img, 0, -500);
 - }
 - // 平移
 - context.beginPath();
 - context.strokeStyle = '#000000';
 - context.strokeRect(10,101,150,100);
 - // x移动 50 y 移动100
 - context.translate(50,100);
 - context.beginPath();
 - context.strokeStyle = '#cccccc';
 - context.strokeRect(10,10,150,100);
 - // 旋转
 - context.beginPath();
 - context.strokeStyle = '#000000';
 - context.strokeRect(200,50,100,50);
 - // 默认旋转是根据0,0中心,使用translate可以按照自己的设置的中心旋转
 - context.translate(250,75);
 - context.rotate(45 * Math.PI /180);
 - context.translate(-250, -75);
 - context.beginPath();
 - context.strokeStyle = '#cccccc';
 - context.strokeRect(200,50,100,50);
 - // transform 矩阵
 - context.beginPath();
 - context.strokeStyle = '#000000';
 - context.strokeRect(10,10,150,100);
 - context.transform(3,0,0,3,0,0);
 - context.beginPath();
 - context.strokeStyle = '#cccccc';
 - context.strokeRect(10,10,150,100);
 - }
 
渐变、图像组合效果、颜色翻转
XML/HTML Code复制内容到剪贴板
- var canvas = document.getElementById('canvas');
 - if (canvas.getContext) {
 - var context = canvas.getContext('2d');
 - // 线性绘制渐变
 - var grd = context.createLinearGradient(0,0,200,100);
 - // postion 必须是0.1-1.0之间的竖直,表示渐变中颜色的地点相对地位,color表示颜色
 - grd.addColorStop(0.1, "#00ff00");
 - grd.addColorStop(0.8, "#ff0000");
 - context.fillStyle = grd;
 - context.fillRect(0,0, 200,100);
 - // 径向渐变
 - var grd = context.createRadialGradient(100,100,10,100,100,50);
 - grd.addColorStop(0.1, "#00ff00");
 - grd.addColorStop(0.8, '#ff0000');
 - context.fillStyle = grd;
 - context.fillRect(0,0,200,200);
 - // 图像组合效果
 - context.fillStyle = '#00ff00';
 - context.fillRect(10,10,50,50);
 - // 新绘图
 - //context.globalCompositeOperation = "source-over";
 - // 只绘制新内容,删除其他所有内容
 - context.globalCompositeOperation = 'copy';
 - // 图形重叠的地方,其颜色值相减后决定
 - context.globalCompositeOperation = 'darker';
 - // 画布上已经有的内容只会载和其他图形重叠的地方保留
 - context.globalCompositeOperation = 'destination-atop';
 - // 参考 http://www.w3school.com.cn/htmldom/prop_canvasrenderingcontext2d_globalcompositeoperation.asp
 - context.beginPath();
 - context.fillStyle = '#ff0000';
 - context.arc(50,50,30,0, 2 * Math.PI);
 - context.fill();
 - // 颜色翻转
 - var img = new Image();
 - img.src = 'images/1.jpg';
 - img.onload = function(){
 - context.drawImage(img, 0,0, 1, 1);
 - var imgData = context.getImageData(0,0, 1,1);
 - var pixels = imgData.data;
 - console.log(pixels);
 - for(var i = 0, n = pixels.length; i < n; i+=4) {
 - pixels[i] = 255 - pixels[i];
 - pixels[i+1] = 255 - pixels[i + 1];
 - pixels[i+2] = 255 - pixels[i + 2];
 - }
 - context.putImageData(imgData, 250, 0);
 - }
 - }
 
相关内容
- 一波HTML5 Canvas基础绘图实例代码集合HTML5 canvas基本绘图之图形组合HTML5 canvas基本绘图之绘制阴影效果HTML5 canvas基本绘图之文字渲染HTML5 canvas基本绘图之绘制曲线HTML5 canvas基本绘图之图形变换HTML5 canvas基本绘图之填充样式实现HTML5 canvas基本绘图之绘制线条HTML5 canvas基本绘图之绘制五角星HTML5 canvas基本绘图之绘制矩形HTML5 canvas基本绘图之绘制线段
 - 很酷的HTML5电子书翻页动画特效css transform 翻页动画记录的实现HTML5 3D书本翻页动画的实现示例使用纯CSS实现书籍3D翻页效果的示例一个不错的html 打印代码支持翻页css实现点击滚动翻页的效果(无js)css3实现书本翻页效果的示例代码
 - 推荐10个HTML5响应式框架分享那些Web设计大神们常用的响应式框架(小结)
 - 整理HTML5中支持的URL编码与字符编码Html5无刷新修改browser Url的方法HTML5 input元素类型:email及url介绍将HTML5 Canvas的内容保存为图片借助toDataURL实现HTML5无刷新改变当前url的代码
 - 浅析HTML5的WebSocket与服务器推送事件HTML5+WebSocket实现多文件同时上传的实例HTML5-WebSocket实现聊天室示例HTML5实现WebSocket协议原理浅析html5的websockets全双工通信详解学习示例利用html5的websocket实现websocket聊天室html5-websocket基于远程方法调用的数据交互实现基于HTML5的WebSocket的实例代码
 - 在HTML5中使用MathML数学公式的简单讲解基于HTML5的数学函数图形绘制插件XCalc源码用HTML5中的Canvas结合公式绘制粒子运动的教程
 - 全面解析HTML5中的标准属性与自定义属性详解HTML5 data-* 自定义属性HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)html5的自定义data-*属性与jquery的data()方法的使用HTML5的自定义属性data-*详细介绍和JS操作实例HTML5自定义data-* data(obj)属性和jquery的data()方法的使用HTML5自定义属性的问题分析
 - 简单整理HTML5的基本特性和语法HTML学习笔记--HTML的语法详解(必看)详解HTML&CSS&JavaScript语法辞典-(专业版) (半场方人) PDF扫描版 93.1Html5 语法与规则简要概述HTML5的语法变化介绍HTML5 新旧语法标记对我们有什么好处HTML语法大全_html语言语法大全(必看)
 - HTML5实现预览本地图片 HTML5本地存储之IndexedDBhtml5中localStorage本地存储的简单使用HTML5 LocalStorage 本地存储刷新值还在详解HTML5 LocalStorage 本地存储 html5本地存储 localStorage操作使用详解Html5 web本地存储实例详解深入剖析webstorage[html5的本地数据处理]HTML5本地存储之Web Storage详解HTML5 本地存储 LocalStorage详解HTML5本地数据库基础操作详解
 - HTML5新特性之用SVG绘制微信logo HTML5新特性之type=file文件上传功能HTML5新特性之语义化标签整理HTML5的一些新特性与Canvas的常用属性基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作HTML5 history新特性pushState、replaceState及两者的区别 HTML5有哪些新特征Html5新特性用canvas标签画多条直线附效果截图html5声频audio和视频video等新特性详细说明html5新特性与用法大全
 
                                
                                                        
                                
                                                        
                                
                                                        
    