html5 worker 实例(二) 图片变换效果


Posted in HTML / CSS onJune 24, 2013

worker的js代码img.js

复制代码
代码如下:

onmessage = function(e) {
postMessage(filter(e.data))
};
function filter(imgd) {
var pix = imgd.pixels.data;
var xcord = imgd.x / 1000;
var ycord = imgd.y / 1000;
for ( var i = 0, n = pix.length; i < n; i += 4) {
var grayscale = pix[i] * xcord + pix[i + 1] * .59 + pix[i + 2] * .11;
pix[i] = grayscale; // red
pix[i + 1] = grayscale; // green
pix[i + 2] = grayscale; // blue
}
imgd['pixels'].data = pix;
return imgd;
}

html代码
复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<title>test2.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript" src="../js/jquery-1.8.0.min.js"></script>
</head>
<body>
<canvas id="myCanvas" width="640" height="480"></canvas>
<img src="../image/psu[4].jpg" class="onHover"> //注意,自己在这里插入一张图片,否则没用效果
<script type="text/javascript">
function process(img,x,y){
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext('2d');
context.drawImage(img, 0, 0);
var pixels = context.getImageData(0,0,img.width,img.height);
var worker = new Worker("img.js");
var obj = {
pixels: pixels,
x:x,
y:y
}
worker.postMessage(obj);
worker.onmessage = function(e) {
if (typeof e.data === "string") {
console.log("Worker: " + e.data);
return;
}
var new_pixels = e.data.pixels; // Pixels from worker
context.putImageData(new_pixels, 0, 0);
img.src = canvas.toDataURL(); // And then to the img
}
}
</script>
<script type="text/javascript">
$(function(){
$(".onHover").on("mouseover", function(){
var x =this.width;
var y = this.height;
console.log("X: " + x + " Y: " + y);
process(this, x, y);
});
})
</script>
</body>
</html>

是执行上面的例子的时候 ,要自己引入jquery包,并且在html页面上的img标签上放入自己要变换的图片。然后部署到服务器,打开页面,当鼠标移动到图片的 上面的时候就会发生变换,在这里执行变换功能的函数有worker负责,随意不影响页面本身的效率,类似于java语言中的多线程。
HTML / CSS 相关文章推荐
css3 中的新特性加强记忆详解
Apr 16 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
Aug 30 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
Mar 14 HTML / CSS
移动端Html5中百度地图的点击事件
Jan 31 HTML / CSS
HTML5实现无刷新修改URL的方法
Nov 14 HTML / CSS
VSCode 自定义html5模板的实现
Dec 05 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
Mar 19 HTML / CSS
Bootstrap File Input文件上传组件
Dec 01 HTML / CSS
html5跳转小程序wx-open-launch-weapp踩坑
Dec 02 HTML / CSS
CSS3实现的文字弹出特效
Apr 16 HTML / CSS
使用canvas对video视频某一刻截图功能
Sep 25 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
Jun 24 #HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
Jun 20 #HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
Jun 20 #HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
Jun 09 #HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
Jun 09 #HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
Jun 09 #HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
Jun 08 #HTML / CSS
You might like
php设计模式之命令模式的应用详解
2013/05/21 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
解决Python使用列表副本的问题
2019/12/19 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
会议开场欢迎词
2014/01/15 职场文书
大学校务公开实施方案
2014/03/31 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
开场白怎么写
2015/06/01 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android