JavaScript で HTML を画像に変換する
この記事では、HTML を画像としてレンダリングする方法を学習します。 これは、HTML を含む Web ページの 2D スナップショットを取得し、それを Web ページに表示するか、画像をダウンロードすることを意味します。
外部の JavaScript ライブラリを使用して、以下のメソッドで HTML を画像にレンダリングしました。
html2canvas
JavaScript ライブラリを使用して HTML を画像に変換する
以下の例では、html2canvas
ライブラリを使用して、HTML を画像に変換し、Web ページにレンダリングしています。
たとえば、ID が異なる 2つの div
要素、my-div
と ShowImage
を作成しました。 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
要素の height
、width
、および 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 ShowImage
の div
要素に追加しました。
<script>
function convertToImage() {
html2canvas(document.getElementById("my-div")).then(function (canvas) {
document.getElementById("ShowImage").appendChild(canvas);
});
}
</script>
出力:
上記の出力アニメーションでは、convert
ボタンをクリックすると、ドキュメント本文内の <div>
要素の新しい画像がレンダリングされることがわかります。
さらに、キャプチャした画像をローカルにダウンロードして保存するための HTML リンクを作成できます。
ここでは、document.createElement("a")
を使用して新しい <a>
要素を作成し、anchor
変数内に保存しました。 また、document.body.appendChild(anchor)
を使用して、ドキュメント本文に <a>
要素を追加しました。
次に、anchor.download = "sample.jpg"
を使用してダウンロード可能な画像ファイルに名前を付け、canvas
変数の toDataURL
プロパティを使用して anchor
の href
属性を設定しました。 また、イメージをダウンロード可能にするために、anchor
の target
属性に _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>
出力:
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>
出力:
ユーザーは、青い div
のスナップショットを撮っていることを確認できます。 ボタンをクリックするたびに、コードは青い div
の新しいスナップショットをドキュメント本文に追加します。
関連記事 - HTML Image
- HTML 画像にキャプションを追加
- HTML 画像の不透明度
- フォルダーから HTML に画像を追加する
- 画像をクリックまたはホバーすると、HTML で拡大されます
- HTML で Base64 画像を表示する