モザイクメイカー

ランダムでモザイクを生成。 色は意図して明るめに偏らせてる。 縦横の値、キャンバスのサイズを変えても、描画数が追従するように作ってある。小数使うとおかしくなるかも。

HTML

<canvas id="canvas" width="400" height="400"></canvas>

CSS

#canvas{
    border:1px solid #ccc;
    outline:1px solid #333;
}

JavaScript

function addEvent(el, fn, observer, useCapture){
    if (el.addEventListener) {
        el.addEventListener(fn, observer, useCapture);
    } else if (el.attachEvent) {
        el.attachEvent('on'+fn, observer);
    }
}

addEvent(window, "load", func, false);

function func(){
    c = document.getElementById("img.png");
    var ctx = c.getContext("2d");
    var cW = c.width, cH = c.height;

    var pW = 10,//パターンの幅!
        pH = 10;//パターンの高さ!
    //上の設定値をどっちも1pxにするとカラーノイズみたいになるよ!
    //ちょっと処理に時間かかるけど(。-∀-)
    
    //下塗り
    ctx.fillStyle = "#000";
    ctx.fillRect(0, 0, cW, cH);
    
    //パターン
    ctx.globalAlpha = 1;//パターンの透明度。薄くすると下塗り色の影響を受ける。
    ctx.lineWidth  = pW;

    var xRepeatLength = cW/pW,
        yRepeatLength = cH/pH;
    
    for(i=0;i<yRepeatLength;i++){
        for(j=0;j<xRepeatLength;j++){
            ctx.beginPath();
            var r = parseInt(Math.random()*200+55,10),
                g = parseInt(Math.random()*200+55,10),
                b = parseInt(Math.random()*200+55,10);
            var sColor = "rgb("+r+","+g+","+b+")" ;
            ctx.strokeStyle = sColor;
            ctx.moveTo(pW/2+pW*j, i*pH);
            ctx.lineTo(pW/2+pW*j, i*pH+pH);
            ctx.stroke();
        };
    };
}