質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2012閲覧

DOMを画像として保存したい

tokuwgawa

総合スコア45

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

0クリップ

投稿2019/02/04 10:22

DOMをJsで生成してそれを画像として保存したいのですが、HTML2Canvasを使ったところ一旦画面にCanvas、img要素に出力してから保存させる方法だったのですが、自分がやりたいのはDOM状態のまま保存ボタン1つで画面描画に変化を起こさずにダウンロードしたいのですが、いい方法ありますか?
プラグインなどでもいいのでよろしくお願いします。

参考サイト

https://hinanaoblog.xyz/?p=434

<!DOCTYPE html> <html lang="ja"> <head> <title>html2canvasテスト</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script> <script src="html2canvas.min.js"></script> <script type="text/javascript"> function getDisplayImage(){ //html2canvas実行 html2canvas(document.getElementById("target")).then(function(canvas) { downloadImage(canvas.toDataURL()); }); } function downloadImage (data) { var fname ="testimage.png"; var encdata= atob(data.replace(/^.*,/, '')); var outdata = new Uint8Array(encdata.length); for (var i = 0; i < encdata.length; i++) { outdata[i] = encdata.charCodeAt(i); } var blob = new Blob([outdata], ["image/png"]); if (window.navigator.msSaveBlob) { //IE用 window.navigator.msSaveOrOpenBlob(blob, fname); } else { //それ以外? document.getElementById("getImage").href=data; //base64そのまま設定 document.getElementById("getImage").download=fname; //ダウンロードファイル名設定 document.getElementById("getImage").click(); //自動クリック } } </script> </head> <body> <div> <input id="downloadImageButton" style="width:120px;" type="button" value="画像保存" onclick="getDisplayImage();" > <a id="getImage" href="" style="display:none;" download="image.png">画像保存</a> </div> <hr> <div id="target" style="width:500px;height:500px"> <img id="work" src="test.png"/> <div style="position:absolute;z-index:10;font-size:28px;top:150px;left:250px;background-color:#FFFFFF;">仕事中</div> </div> </body> </html>

ボツ理由
わざわざCanvas要素などに再描画させて保存させなかったのでこれが使えると思ったのですが、保存画像がDOM内で指定したサイズの2倍で保存されてしまう。
サイズ指定して保存すると画像が何も写ってないものが保存される。

s8_chu👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

私の知る限りではDOMで描画されたWebページをウインドウ丸ごとスクリーンショットをとるWeb標準APIは存在しません。
html2canvasは内部に独自のレンダリングエンジンを実装していて、ブラウザのレンダリングをエミュレートする事で画像ファイル化を実装できますが、当然、ブラウザのレンダリングとは異なります。
ブラウザのレンダリングと全く同じスクリーンショットが欲しい場合は、FireShot等の拡張機能を使用して下さい。

Re: tokuwgawa さん

投稿2019/02/04 12:20

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

質問頂きありがとうございます。
このようなやり方はどうでしょうか?
Stackoverflow Downloading Canvas element to an image

投稿2019/02/04 11:00

bochan2

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問