2
13693261870
2022-09-16 653761a31dfeb50dd3d007e892d69c90bf0cdafc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
jQuery(window).load(function () {
    jQuery(".grayscale img").fadeIn(500);
    jQuery('.grayscale img').each(function () {
        this.src = grayscale(this.src);
    });
    jQuery('.grayscale img').mouseover(function () {
        jQuery(this).parent().find('img:first').stop().animate({opacity: 1}, 1000);
    })
    jQuery('.img_grayscale').mouseout(function () {
        jQuery(this).stop().animate({opacity: 0}, 1000);
    });
});
 
function grayscale(src) {
    var canvas = document.createElement('canvas'),
        ctx = canvas.getContext('2d'),
        imgObj = new Image();
    imgObj.src = src;
    canvas.width = imgObj.width;
    canvas.height = imgObj.height;
    ctx.drawImage(imgObj, 0, 0);
    var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
    for (var y = 0; y < imgPixels.height; y++) {
        for (var x = 0; x < imgPixels.width; x++) {
            var i = (y * 4) * imgPixels.width + x * 4;
            var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
            imgPixels.data[i] = avg;
            imgPixels.data[i + 1] = avg;
            imgPixels.data[i + 2] = avg;
        }
    }
    ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
    return canvas.toDataURL();
}