画像をリサイズする

Javascript
<!DOCTYPE html>
<html>
    <head>
        <meta charset="'utf-8">
        <title>resize with canvas</title>
    </head>
    <body>
        <input type="file">
        <div class="box"></div>
        <script>
            const input = document.querySelector('input');
            const box = document.querySelector('.box');

            input.addEventListener('change', (e) => {

                let image = e.target.files[0];
                console.log(image);

                // 画像を「data:」から始まるURLに変換してダウンロードできるようにする
                let reader = new FileReader();
                reader.readAsDataURL(image);
                console.log(reader);

                // ロードイベント
                reader.onload = (e) => {

                    // 一旦オリジナルサイズのimgタグを作成する必要がある(readerのresultにURlが格納されている)
                    const imgTag = document.createElement('img');
                    imgTag.src = e.target.result;
                    
                    imgTag.onload = (e) => {

                        // canvasタグをクリエイトして幅400にリサイズした図形を描写する
                        const canvas = document.createElement('canvas');
                        canvas.width = 400;
                        canvas.height = e.target.height * 400 / e.target.width;
                        canvas.getContext('2d').drawImage(imgTag, 0, 0, canvas.width, canvas.height);

                        // imgタグをクリエイトしてboxにappendChildする(品質は90に落として、拡張子はpngを指定)
                        const newImgTag = document.createElement('img');
                        newImgTag.src = canvas.getContext('2d').canvas.toDataURL('image/png', 90);
                        box.appendChild(newImgTag);
                    };
                };

            });
        </script>
    </body>
</html> 
BACK