基于HTML5 Canvas实现的图片马赛克模糊特效

穆理
2023-12-01

效果请点击下面网址: http://hovertree.com/texiao/html5/1.htm


一、开门见山
受美国肖像画家Chuck Close的启发,此脚本通过使用HTML5 canvas元素把图像转换成像素形式,这基本上是一个为canvas imageData功能的简单演示。

此脚本现存于GitHub上,您可以在那里下载到脚本和示例。在GitHub上查看像素化资源


二、选项
此方法接受一个对象数组,每个对象都拥有一组选项。
resolution : 渲染像素间的像素距离,必须的。
shape : 像素的形状。 接受的选项有:square, circle, 以及diamond。可选,默认是square。
size : 渲染像素的像素大小值,可选,默认值是resolution。
offset : 偏移像素。可选,默认是0。可以是一个单独的值15实现对角线偏移,或者是个数组或X/Y关键字的对象实现偏移:
[ 15, 5 ] 或 { x: 15, y: 5 }。
alpha : 小数值,指渲染的透明度。 可选,默认是1。



三、代码示例

要想让图片像素化,首先调用如下脚本:
<script type="text/javascript" src="http://hovertree.com/texiao/html5/1/js/close-pixelate.js"></script>
然后调用方法closePixelate,更具体的是:
图片dom.closePixelate(选项参数)

此脚本可以应用于各类图片。根据HTML5规范,浏览器禁止任何外部托管图片上使用getImageData (),但是,多亏了John Schulz的巨大贡献,通过使用Max Novakovic的getImageData API,进一步像素化具有内置的方法来解决这个安全特征。

<img id="pixelExample2" src="pixel-example.jpg" width="300" height="426" />

在你的脚本中使用closePixelate方法与图片上,你可以通过一组数组选项控制图片输出。如下示例代码:
document.getElementById('pixelExample2').closePixelate( [ 
{ resolution: 24 }
] );


html代码如下:

<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>基于HTML5 Canvas实现的图片马赛克模糊特效-何问起</title>
<link rel="stylesheet" type="text/css" href="1/css/normalize.css" />
<link rel="stylesheet" type="text/css" href="1/css/default.css">
<style type="text/css">
.thumb
{
margin-left: 5em;
}
.thumb img
{
max-width: 400px;
}
</style>
</head>
<body>
<div style="width:760px;margin:0px auto">
<h2>基于HTML5 Canvas的图片马赛克模糊特效 何问起</h2>
<a href="http://hovertree.com">首页</a> <a href="http://hovertree.com/hvtart/bjae/160ced36cb3a6a86.htm">原文</a> <a href="http://hovertree.com/texiao/html5/1/tupianmohu.rar" target="_self">下载</a>
<a href="http://hovertree.com/texiao/">特效库</a><br />
</div>

<div class="container">
<div class="content bgcolor-8">
<p class="center">
改变模糊度
<input type="range" min="4" max="100" value="6" id="range" />
<span id="output">6</span></p>
<div class="thumb">
<img src="1/img/1.jpg" id="dolly1" />
<img src="1/img/2.jpg" id="dolly2" />
<img src="1/img/3.jpg" id="dolly3" />
</div>
</div>
</div>
<script src="http://hovertree.com/texiao/html5/1/js/close-pixelate.js"></script>
<script>
window.onload = function () {
var dolly1 = document.getElementById('dolly1')
var dolly2 = document.getElementById('dolly2')
var dolly3 = document.getElementById('dolly3')
var pixelOpts = [{ resolution: 8}]
var pixelDolly1 = dolly1.closePixelate(pixelOpts)
var pixelDolly2 = dolly2.closePixelate(pixelOpts)
var pixelDolly3 = dolly3.closePixelate(pixelOpts)
var range = document.getElementById('range')
var output = document.getElementById('output')

range.addEventListener('change', function (event) {
var res = parseInt(event.target.value, 10)
res = Math.floor(res / 2) * 2
res = Math.max(4, Math.min(100, res))
output.textContent = res
// console.log( res );
pixelOpts = [{ resolution: res}]
pixelDolly1.render(pixelOpts)
pixelDolly2.render(pixelOpts)
pixelDolly3.render(pixelOpts)
}, false)
}
</script>
</body>
</html>

下载 :http://hovertree.com/texiao/html5/1/tupianmohu.rar

转自:http://hovertree.com/hvtart/bjae/160ced36cb3a6a86.htm

web前端汇总http://www.cnblogs.com/jihua/p/webfront.html

 类似资料: