LoginSignup
16
15

More than 5 years have passed since last update.

DOMをPNGに変換してリサイズしてからダウンロードする

Last updated at Posted at 2018-03-08

必要なライブラリをインストール

yarn add dom-to-image
yarn add file-saver
  • dom-to-image
    • https://github.com/tsayen/dom-to-image
    • 名前の通りDOMを投げると画像に変換してくれるすごいやつ。
    • ただリサイズとかはできないので別にやる必要あり。
  • file-saver

変換、リサイズ、ダウンロード

import domtoimage from 'dom-to-image';
import FileSaver from 'file-saver';

// DOM要素をdomtoimageのtoPNGに渡すと結果がPromiseで返ってくる
domtoimage.toPng(element)
  .then(function (dataUrl) {

    // dataUrlが返ってくるのでImageを生成し生成した画像を読み込む
    const img = new Image();
    img.src = dataUrl;

    // 読み込みが終わったらリサイズのために、canvasを生成しimgを描画する
    img.onload = () => {
      const canvas = document.createElement('canvas');
      canvas.width = 128;
      canvas.height = 128;
      const ctx = canvas.getContext('2d');
      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

      // canvasをblobに変換し、FileSaverでダウンロードを行う
      canvas.toBlob((blob) => {
        FileSaver.saveAs(blob, "image.png");
      });
    };
  })
  .catch((error) => {
    console.log(error);
  });
  • dom-to-imgaeは画像のリサイズに対応していないので、dataUrlを一度img要素に入れ、それをcanvasに描画することでリサイズを行なう。
16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15