zoukankan      html  css  js  c++  java
  • 基于HTML5 Canvas实现的图片马赛克模糊特效

    效果请点击下面网址: 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="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

  • 相关阅读:
    Stream概念的理解
    nodejs进程间通信
    nodejs多进程spawn execFile exec fok方法的区别
    socket这个名词的理解
    Object.defineProperty方法总结
    git中HEAD^和HEAD~区别
    http常见的9种方法
    java怎么建立JAVA工程项目?
    树莓派mjpg-stream摄像头监控
    制作OS X 10.9 Mavericks 安装U盘
  • 原文地址:https://www.cnblogs.com/jihua/p/tupianmohu.html
Copyright © 2011-2022 走看看