javascript+canvas制作九宫格小程序


Posted in Javascript onDecember 28, 2014

js核心代码

/*

 *canvasid:html canvas标签id

 *imageid:html img 标签id

 *gridcountX:x轴图片分割个数

 *gridcountY:y轴图片分割个数

 *gridspace:宫格空隙

 *offsetX:x*y宫格相对canvas(0,0)X坐标偏移量

 **offsetX:x*y宫格相对canvas(0,0)Y坐标偏移量

 *isanimat:是否启用动画显示

 */

function ImageGrid(canvasid, imageid, gridcountX, gridcountY, gridspace, offsetX, offsetY, isanimat) {

    var image = new Image();

    var g = document.getElementById(canvasid).getContext("2d");

    var img=document.getElementById(imageid);

    image.src=img.getAttribute("src");

    g.drawImage(image, 0, 0);

    var imagedata = g.getImageData(0, 0, image.width, image.height);

    var grid_width = imagedata.width / gridcountX;

    var grid_height = imagedata.height / gridcountY;

    //动画

    if (isanimat) {

        var x = 0,

            y = 0;

        var inter = setInterval(function() {

            g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            x < gridcountX ? x++ : x = 0;

            if (x == 0) {

                y < gridcountY ? y++ : y = 0;

            }

        }, 200);

        y == gridcountY ? clearInterval(inter) : null;

    } else { //非动画

        for (var y = 0; y < gridcountY; y++) {

            for (var x = 0; x < gridcountX; x++) {

                g.putImageData(imagedata, gridspace * x + offsetX, gridspace * y + offsetY, grid_width * x, grid_height * y, grid_width, grid_height);

            }

        }

    }

}

html代码

<canvas id="canvas1" width="900px" height="550px">Canvas demo</canvas>

 <img id="image1" style="display:none" src="//img.jbzj.com/file_images/article/201412/2014122894620636.jpg"/>

使用方法:

//eg...

ImageGrid("canvas1", "image1", 3, 3, 2, 220, 0, true); //3*3

ImageGrid("canvas1", "image1", 4, 4, 2, 440, 0, true); //4*4

ImageGrid("canvas1", "image1", 3, 4, 2, 660, 0, false); //3*4

代码很简洁,效果却非常炫酷,小伙伴们学会了吗?

Javascript 相关文章推荐
JQuery 图片延迟加载并等比缩放插件
Nov 09 Javascript
JS仿百度搜索自动提示框匹配查询功能
Nov 21 Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
WebSocket的简单介绍及应用
May 23 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
微信小程序实现点击图片放大预览
Oct 21 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 10 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 #Javascript
浅谈Javascript Base64 加密解密
Dec 28 #Javascript
JavaScript设计模式之代理模式介绍
Dec 28 #Javascript
JavaScript设计模式之外观模式介绍
Dec 28 #Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 #Javascript
jQuery中removeData()方法用法实例
Dec 27 #Javascript
jQuery中data()方法用法实例
Dec 27 #Javascript
You might like
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
用Django写天气预报查询网站
2018/10/21 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
使用python实现kNN分类算法
2019/10/16 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
python 如何调用 dubbo 接口
2020/09/24 Python
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
报告会主持词
2014/04/02 职场文书
三方协议书范本
2014/04/22 职场文书
工作年限证明模板
2014/11/01 职场文书
入党群众意见范文
2015/06/02 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python