JavaScript で HTML を画像に変換する

Shubham Vora 2023年6月20日
  1. html2canvas JavaScript ライブラリを使用して HTML を画像に変換する
  2. dom-to-image JavaScript ライブラリを使用して HTML を画像に変換する
JavaScript で HTML を画像に変換する

この記事では、HTML を画像としてレンダリングする方法を学習します。 これは、HTML を含む Web ページの 2D スナップショットを取得し、それを Web ページに表示するか、画像をダウンロードすることを意味します。

外部の JavaScript ライブラリを使用して、以下のメソッドで HTML を画像にレンダリングしました。

html2canvas JavaScript ライブラリを使用して HTML を画像に変換する

以下の例では、html2canvas ライブラリを使用して、HTML を画像に変換し、Web ページにレンダリングしています。

たとえば、ID が異なる 2つの div 要素、my-divShowImage を作成しました。 my-div ID を持つ div 要素のスナップショットを取得し、ID ShowImage を持つ div 要素内にスナップショットを表示します。

また、<button> 要素を作成し、そのための onclick イベントを追加しました。 ユーザーがボタンをクリックすると、convertToImage() 関数が呼び出され、HTML が画像に変換されます。

<body>
    <div id="my-div">This is sample div element.</div>
    <div id="ShowImage"></div>
    <button onclick="convertToImage()">Convert</button>
</body>

以下の CSS の div 要素にいくつかのスタイルを適用しました。 CSS プロパティを使用して、div 要素の heightwidth、および background-color を設定しました。

また、すべての div 要素のマージンを設定して、周囲にスペースを残します。

div {
    display: block;
    margin: 20px;
}
#my-div {
    height: 300px;
    width: 300px;
    background-color: red;
}

html2canvas ライブラリを使用するには、(https://html2canvas.hertzen.com/) からローカル コンピュータにダウンロードする必要があります。 その後、ユーザーは <script> タグの src 属性にライブラリ ファイルの正しいパスを割り当てることにより、<script> タグを介してライブラリを HTML コードに追加できます。

<script src="html2canvas.js" type="text/javascript"></script>

convertToImage() 関数には、HTML を画像に変換する JavaScript コードが含まれています。

以下のコード例では、JavaScript で ID を使用して ID my-div を持つ div 要素にアクセスし、html2canvas 関数を適用してその特定の HTML 要素の画像をキャプチャしています。 canvas は画像を保存し、その画像を ID ShowImagediv 要素に追加しました。

<script>
    function convertToImage() {
        html2canvas(document.getElementById("my-div")).then(function (canvas) {
        document.getElementById("ShowImage").appendChild(canvas);
        });
    }
</script>

出力:

html を画像に変換 - one

上記の出力アニメーションでは、convert ボタンをクリックすると、ドキュメント本文内の <div> 要素の新しい画像がレンダリングされることがわかります。

さらに、キャプチャした画像をローカルにダウンロードして保存するための HTML リンクを作成できます。

ここでは、document.createElement("a") を使用して新しい <a> 要素を作成し、anchor 変数内に保存しました。 また、document.body.appendChild(anchor) を使用して、ドキュメント本文に <a> 要素を追加しました。

次に、anchor.download = "sample.jpg" を使用してダウンロード可能な画像ファイルに名前を付け、canvas 変数の toDataURL プロパティを使用して anchorhref 属性を設定しました。 また、イメージをダウンロード可能にするために、anchortarget 属性に _blank 値を設定しました。

出力は、convert ボタンをクリックすると、div 要素の画像を Web ページに追加し、同じ画像ファイルをローカル コンピューターにダウンロードすることも示しています。

<script>
    function convertToImage() {
        html2canvas(document.getElementById("my-div")).then(function (canvas) {
        var anchor = document.createElement("a");
        document.body.appendChild(anchor);
        document.getElementById("ShowImage").appendChild(canvas);
        anchor.download = "sample.jpg";
        anchor.href = canvas.toDataURL();
        anchor.target = "_blank";
        anchor.click();
       });
    }
</script>

出力:

html を画像に変換 - 2

dom-to-image JavaScript ライブラリを使用して HTML を画像に変換する

以下の HTML コードは、上記の例で使用されているものとほぼ同じで、id 属性の値が異なる 2つの div 要素が含まれています。

<div id="my-div">Demo texts.</div>
<div id="ShowImage"></div>
<button onclick="convertToImage()">Convert to image</button>

以下の CSS コードには HTML コードのスタイルが含まれており、上記のコード例で使用したものとほぼ同じです。

div {
    display: block;
    margin: 20px;
}
#my-div {
    height: 100px;
    width: 100px;
    background-color: blue;
}

domtoimage ライブラリを使用するには、ローカルにダウンロードするか、その CDN を使用する必要があります。 ここで、ユーザーは、HTML コードの <head> セクションに domtoimage ライブラリの以下の CDN を埋め込む必要があります。

<script
      src="https://cdnjs.cloudflare.com/ajax/libs/dom-to-image/2.6.0/dom-to-image.min.js"
      integrity="sha512-01CJ9/g7e8cUmY0DFTMcUw/ikS799FHiOA0eyHsUWfOetgbx/t6oV4otQ5zXKQyIrQGTHSmRVPIgrgLcZi/WMA=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"
    ></script>

以下の JavaScript コードでは、ID を使用して div 要素にアクセスし、element 変数に格納しています。

次に、domtoimage ライブラリを使用して、HTML を png 画像に変換しました。 new Image() コンストラクターを使用して新しい空の画像を作成し、newImage 変数内に保存しました。

また、newImage 変数の src 属性に URL 値を割り当てています。 その後、newImage を Web ページに追加します。

また、catch ブロックを使用してエラーを処理しました。

<script>
    function convertToImage(){
    var element = document.getElementById("my-div");
    domtoimage
        .toPng(element)
        .then(function (URL) {
            var newImg = new Image();
            newImg.src = URL;
            document.getElementById('ShowImage').appendChild(newImg);
        })
        .catch(function (error) {
            console.error("error");
        });
    }
</script>

出力:

html を画像に変換 - three

ユーザーは、青い div のスナップショットを撮っていることを確認できます。 ボタンをクリックするたびに、コードは青い div の新しいスナップショットをドキュメント本文に追加します。

著者: Shubham Vora
Shubham Vora avatar Shubham Vora avatar

Shubham is a software developer interested in learning and writing about various technologies. He loves to help people by sharing vast knowledge about modern technologies via different platforms such as the DelftStack.com website.

LinkedIn GitHub

関連記事 - HTML Image

関連記事 - HTML Convert