html5中文学习网

您的位置: 首页 > html5教程 > 入门教程 » 正文

html5 worker 实例(二) 图片变换效果_html5教程技巧

[ ] 已经帮助:人解决问题
点评:是执行下面的例子的时候,要自己引入jquery包,并且在html页面上的img标签上放入自己要变换的图片,具体实现步骤如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助
worker的js代码img.js kifHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
kifHTML5中文学习网 - HTML5先行者学习网
onmessage = function(e) { kifHTML5中文学习网 - HTML5先行者学习网
postMessage(filter(e.data)) kifHTML5中文学习网 - HTML5先行者学习网
}; kifHTML5中文学习网 - HTML5先行者学习网
function filter(imgd) { kifHTML5中文学习网 - HTML5先行者学习网
var pix = imgd.pixels.data; kifHTML5中文学习网 - HTML5先行者学习网
var xcord = imgd.x / 1000; kifHTML5中文学习网 - HTML5先行者学习网
var ycord = imgd.y / 1000; kifHTML5中文学习网 - HTML5先行者学习网
for ( var i = 0, n = pix.length; i < n; i += 4) { kifHTML5中文学习网 - HTML5先行者学习网
var grayscale = pix[i] * xcord + pix[i + 1] * .59 + pix[i + 2] * .11; kifHTML5中文学习网 - HTML5先行者学习网
pix[i] = grayscale; // red kifHTML5中文学习网 - HTML5先行者学习网
pix[i + 1] = grayscale; // green kifHTML5中文学习网 - HTML5先行者学习网
pix[i + 2] = grayscale; // blue kifHTML5中文学习网 - HTML5先行者学习网
} kifHTML5中文学习网 - HTML5先行者学习网
imgd['pixels'].data = pix; kifHTML5中文学习网 - HTML5先行者学习网
return imgd; kifHTML5中文学习网 - HTML5先行者学习网
} kifHTML5中文学习网 - HTML5先行者学习网
kifHTML5中文学习网 - HTML5先行者学习网
html代码 kifHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
kifHTML5中文学习网 - HTML5先行者学习网
<!DOCTYPE html> kifHTML5中文学习网 - HTML5先行者学习网
<html> kifHTML5中文学习网 - HTML5先行者学习网
<head> kifHTML5中文学习网 - HTML5先行者学习网
<title>test2.html</title> kifHTML5中文学习网 - HTML5先行者学习网
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> kifHTML5中文学习网 - HTML5先行者学习网
<meta http-equiv="description" content="this is my page"> kifHTML5中文学习网 - HTML5先行者学习网
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> kifHTML5中文学习网 - HTML5先行者学习网
<!--<link rel="stylesheet" type="text/css" href="./styles.css">--> kifHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript" src="../js/jquery-1.8.0.min.js"></script> kifHTML5中文学习网 - HTML5先行者学习网
</head> kifHTML5中文学习网 - HTML5先行者学习网
<body> kifHTML5中文学习网 - HTML5先行者学习网
<canvas id="myCanvas" width="640" height="480"></canvas> kifHTML5中文学习网 - HTML5先行者学习网
<img src="../image/psu[4].jpg" class="onHover"> //注意,自己在这里插入一张图片,否则没用效果 kifHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript"> kifHTML5中文学习网 - HTML5先行者学习网
function process(img,x,y){ kifHTML5中文学习网 - HTML5先行者学习网
var canvas = document.getElementById("myCanvas"); kifHTML5中文学习网 - HTML5先行者学习网
var context = canvas.getContext('2d'); kifHTML5中文学习网 - HTML5先行者学习网
context.drawImage(img, 0, 0); kifHTML5中文学习网 - HTML5先行者学习网
var pixels = context.getImageData(0,0,img.width,img.height); kifHTML5中文学习网 - HTML5先行者学习网
var worker = new Worker("img.js"); kifHTML5中文学习网 - HTML5先行者学习网
var obj = { kifHTML5中文学习网 - HTML5先行者学习网
pixels: pixels, kifHTML5中文学习网 - HTML5先行者学习网
x:x, kifHTML5中文学习网 - HTML5先行者学习网
y:y kifHTML5中文学习网 - HTML5先行者学习网
} kifHTML5中文学习网 - HTML5先行者学习网
worker.postMessage(obj); kifHTML5中文学习网 - HTML5先行者学习网
worker.onmessage = function(e) { kifHTML5中文学习网 - HTML5先行者学习网
if (typeof e.data === "string") { kifHTML5中文学习网 - HTML5先行者学习网
console.log("Worker: " + e.data); kifHTML5中文学习网 - HTML5先行者学习网
return; kifHTML5中文学习网 - HTML5先行者学习网
} kifHTML5中文学习网 - HTML5先行者学习网
var new_pixels = e.data.pixels; // Pixels from worker kifHTML5中文学习网 - HTML5先行者学习网
context.putImageData(new_pixels, 0, 0); kifHTML5中文学习网 - HTML5先行者学习网
img.src = canvas.toDataURL(); // And then to the img kifHTML5中文学习网 - HTML5先行者学习网
} kifHTML5中文学习网 - HTML5先行者学习网
} kifHTML5中文学习网 - HTML5先行者学习网
</script> kifHTML5中文学习网 - HTML5先行者学习网
<script type="text/javascript"> kifHTML5中文学习网 - HTML5先行者学习网
$(function(){ kifHTML5中文学习网 - HTML5先行者学习网
$(".onHover").on("mouseover", function(){ kifHTML5中文学习网 - HTML5先行者学习网
var x =this.width; kifHTML5中文学习网 - HTML5先行者学习网
var y = this.height; kifHTML5中文学习网 - HTML5先行者学习网
console.log("X: " + x + " Y: " + y); kifHTML5中文学习网 - HTML5先行者学习网
process(this, x, y); kifHTML5中文学习网 - HTML5先行者学习网
}); kifHTML5中文学习网 - HTML5先行者学习网
}) kifHTML5中文学习网 - HTML5先行者学习网
</script> kifHTML5中文学习网 - HTML5先行者学习网
</body> kifHTML5中文学习网 - HTML5先行者学习网
</html> kifHTML5中文学习网 - HTML5先行者学习网
kifHTML5中文学习网 - HTML5先行者学习网
是执行上面的例子的时候 ,要自己引入jquery包,并且在html页面上的img标签上放入自己要变换的图片。然后部署到服务器,打开页面,当鼠标移动到图片的 上面的时候就会发生变换,在这里执行变换功能的函数有worker负责,随意不影响页面本身的效率,类似于java语言中的多线程。kifHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助