html5 canvas图片马赛克

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
window.onload = function (){
    var oc = document.getElementById(‘c1‘);
    var ogc = oc.getContext(‘2d‘);

    var yimg = new Image();

    yimg.onload = function ()
    {
        draw(this);
    };

    yimg.src = ‘img/5-5.jpg‘;

    function draw(obj)
    {
        oc.width = obj.width;
        oc.height = obj.height * 2;
        ogc.drawImage(obj,0,0);

        var oimg = ogc.getImageData(0,0,obj.width,obj.height);

        var w = oimg.width;
        var h = oimg.height;

        var num = 5;

        var newimg = ogc.createImageData(obj.width,obj.height);

        var stepw = w/num;
        var steph = h/num;

        for(var i = 0; i < steph; i++)
        {
            for(var j = 0; j < stepw; j++)
            {
                var color = getXY(oimg,j*num+Math.floor(Math.random()*num),i*num+Math.floor(Math.random()*num));
                for(var k = 0; k < num; k++)
                {
                    for(var l = 0; l < num; l++)
                    {
                        setXY(newimg,j*num+l,i*num+k,color);
                    }
                }

            }
        }

        ogc.putImageData(newimg,0,obj.height);
    }

    function getXY(obj,x,y)
    {
        var w = obj.width;
        var h = obj.height;
        var d = obj.data;

        var color = [];

        color[0] = d[ 4*(y*w+x)];
        color[1] = d[ 4*(y*w+x) +1];
        color[2] = d[ 4*(y*w+x) +2];
        color[3] = d[ 4*(y*w+x) +3];

        return color;
    }

    function setXY(obj,x,y,color)
    {
        var w = obj.width;
        var h = obj.height;
        var d = obj.data;

        d[ 4*(y*w+x)] = color[0];
        d[ 4*(y*w+x) +1] = color[1];
        d[ 4*(y*w+x) +2] = color[2];
        d[ 4*(y*w+x) +3] = color[3];

    }
}
</script>
<style>
body{
    background:pink;
    }
#c1{
    background:white;
    }
</style>
</head>

<body>
<canvas id="c1" width="400" height="400"></canvas>
</body>
</html>
时间: 2024-10-03 14:45:14

html5 canvas图片马赛克的相关文章

HTML5 canvas生成图片马赛克特效插件

这是一款使用HTML5 canvas来将图片制作成马赛克效果的js插件.该马赛克插件可以使用canvas生成各种形状的像素马赛克,并将图片按照其颜色深度用不同颜色的马赛克进行渲染,效果十分逼真. 该插件的灵感来自于美国肖像画家Chuck Close.已经有人使用这个js插件来制作了一个完整的图片马赛克应用框架:The Pixelator. 这个马赛克效果js插件需要使用同源的图片,根据 HTML5 规范,浏览器在解析getImageData()方法时会阻止获取跨浏览器的图片. 在线演示:http

HTML5 canvas图片爆炸特效

这是一款基于html5 canvas的炫酷图片爆炸飞散特效js插件.该js插件当用鼠标点击图片时,图片会有玻璃窗被子弹击碎时的爆炸飞散效果,非常炫酷. 在线演示:http://www.htmleaf.com/Demo/201502151384.html 下载地址:http://www.htmleaf.com/html5/html5-canvas/201502151383.html

HTML5 Canvas ( 图片填充样式 ) fillStyle, createPattern

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

HTML5 Canvas ( 图片绘制 转化为base64 )

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

html5 canvas图片渐变

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> window.onload = function () { var oc = document.getElementById('c1'); var ogc = oc.getContext('2d'); var yimg = new Imag

html5 canvas图片翻转

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> window.onload = function () { var oc = document.getElementById('c1'); var ogc = oc.getContext('2d'); var yimg = new Imag

html5 canvas图片反色

<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> window.onload = function () { var oc = document.getElementById('c1'); var ogc = oc.getContext('2d'); var yimg = new Imag

8个经典炫酷的HTML5 Canvas动画欣赏

HTML5非常强大,尤其是Canvas技术的应用,让HTML5几乎可以完成所有Flash能完成的效果.本文精选了8个经典炫酷的HTML5 Canvas动画欣赏,每一个都提供全部的源代码,希望对你有所帮助. 1.HTML5 Canvas可拖动的弹性大树摇摆动画 今天让我们继续来分享一个炫酷的HTML5动画,它是一款基于HTML5 Canvas的大树摇摆动画,这款HTML5动画的特点是我们可以拖拽树枝,从而让整棵树摇摆起来,这样就真实地模拟了大树从摇摆到静止的整个过程,相当逼真. 在线演示     

基于HTML5 Canvas生成粒子效果的人物头像

前面我们分享过一个HTML5 Canvas实现的图像马赛克模糊效果,HTML5处理图片真的非常简单.今天我们要再利用HTML5 Canvas实现一个粒子效果的人物头像,你可以任意选择一张头像图片,接下来该图片会被打散成许多粒子,然后慢慢的重组成图片,鼠标滑过图片时粒子还会出现浮动的动画特效,看上去非常酷. 在线预览   源码下载 HTML代码如下 <p class="center">Change pixel resolution <input type="r