JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTML5キャンバスをPNG画像として保存・ダウンロードする方法

HTML5キャンバスをPNGファイルに変換する手順

HTML5の<canvas>要素で描画した内容をPNG画像として保存するには、以下の手順に従ってください。

基本的な仕組みは、canvas.toDataURL()メソッドで生成したデータURLを、<a>タグのhref属性に設定することです。

1. base64形式の画像データを扱う

toDataURL()で生成されるのは、base64エンコードされた画像データです。次のような形式になります。

<img src="data:image/png;base64,iOBVRw0KGgoAAAANSUhEUg...." class="image" />

2. ダウンロード用のファイル名を指定する

<a>タグにdownload属性を追加すると、クリック時に画像がダウンロードされます。属性値にファイル名を指定しましょう。

<a download="newimg.png" href="...">画像を保存</a>

3. HTTPヘッダーを定義する(サーバー側で処理する場合)

サーバーサイドでダウンロードを制御したい場合は、Content-Dispositionヘッダーを使用します。

headers=Content-Disposition: attachment; filename=newimg.png

4. ブラウザのメモリ使用量を抑える工夫

大きな画像を扱う場合、ブラウザのRAMへの負担を軽減するために、データURLは必要なタイミングで動的に生成するのがおすすめです。以下のように、クリックイベント発生時にデータURLを作成することで、無駄なメモリ消費を防げます。

// クリック時にデータURLを動的に生成
function myCanvas() {
    var d = canvas.toDataURL('image/png');
    this.href = d;
};
d.addEventListener('click', myCanvas, false);

まとめ

このように、toDataURL()とdownload属性を組み合わせるだけで、JavaScriptのみでキャンバスの内容をPNGファイルとして簡単に保存できます。サーバーへの通信も不要なので、クライアントサイドで完結する軽量な実装が可能です。

  1. PNGファイルとは?特徴・開き方・変換方法をわかりやすく解説

    この記事のポイントPNGファイルとは「Portable Network Graphics(ポータブル・ネットワーク・グラフィックス)」形式の画像ファイルです。WebブラウザやXnViewなどの画像表示ソフトなら、どれでも開くことができます。FileZigZagなどの画像変換ツールを使えば、JPG・SVG・ICOなどの形式に変換できます。この記事では、PNGファイルの基本情報から、他の画像形式と比べて選ばれる理由、開けるソフトウェア、別形式への変換方法までを詳しく解説します。PNGファイルとは何かPNGファイルは「Portable Network Graphics」の略称を持つ画像ファイル形式で

  2. HTML5のCanvasにSVGファイルを描画する方法

    Canvas(キャンバス)にSVGを描画するには、SVGを画像として扱う必要があります。まず、HTMLコンテンツを含めるための<foreignObject>要素を使ってSVGデータを構築し、その後、生成したSVG画像をCanvas上に描画します。 具体的な流れは以下の通りです。 処理の手順 SVG文字列を作成する:<svg>要素の中に<foreignObject>要素を配置し、その中にXHTML名前空間(xmlns=https://www.w3.org/1999/xhtml)を指定したHTMLを記述します。 Blobオブジェクトに変換する:作成したSVG文