Canvas를 사용하여 이미지를 회색조로 변환

Canvas를 사용하여 이미지를 회색조로 변환하는 방법입니다.
처리 흐름은 다음과 같습니다.
  • Canvas에 원본 이미지를 그립니다
  • Canvas에서 이미지를 회색조로 변환
  • 변환 된 이미지를 base64 형식으로 내보내기
  • 이미지의 src 속성 재작성

  • 출처



    app.js
    $(window).load(function() {
        $("img").each(function() {
    
            // キャンバスに画像を描画する
            var canvas = document.createElement("canvas");
            var ctx = canvas.getContext("2d");
            var img = new Image();
            img.src = $(this).attr("src");
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0);
    
            // 画像の各ピクセルをグレースケールに変換する
            var pixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
            for (var y = 0; y < pixels.height; y++) {
                for (var x = 0; x < pixels.width; x++) {
                    var i = (y * 4) * pixels.width + x * 4;
                    var rgb = parseInt((pixels.data[i] + pixels.data[i + 1] + pixels.data[i + 2]) / 3, 10);
                    pixels.data[i] = rgb;
                    pixels.data[i + 1] = rgb;
                    pixels.data[i + 2] = rgb;
                }
            }
            ctx.putImageData(pixels, 0, 0, 0, 0, pixels.width, pixels.height);
    
            // 画像を差し替える
            $(this).attr("src", canvas.toDataURL());
        });
    });
    

    index.html
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
        <script src="js/app.js"></script>
        <title>Image to Grayscale</title>
    </head>
    <body>
        <p><img src="img/photo_1.jpg"></p>
        <p><img src="img/photo_2.jpg"></p>
        <p><img src="img/photo_3.jpg"></p>
    </body>
    </html>
    

    결과



    좋은 웹페이지 즐겨찾기