Vue を使用して Web ページのスクリーンショットを撮る方法をご存知ですか?

Vue を使用して Web ページのスクリーンショットを撮る方法をご存知ですか?

1. html2Canvasをインストールする

npm をインストール html2canvas --save

2. 必要なVueコンポーネントを導入する

「html2canvas」からhtml2canvasをインポートします。

3. スクリーンショットボタンを書く

<el-button class="button-dalod" size="mini" title="画像を生成" @click="toImage()" icon="el-icon-download"></el-button>

4. toImage関数を呼び出す

// ページ要素を画像に変換する toImage () {
            // キャンバスタグを手動で作成する const canvas = document.createElement("canvas")
            // 親タグを取得します。つまり、このタグ内の DOM 要素が画像を生成します // imageTofile は、スクリーンショット範囲内の親要素のカスタム参照名です let canvasBox = this.$refs.imageTofile
            // 親の幅と高さを取得します。const width = parseInt(window.getComputedStyle(canvasBox).width)
            定数高さ = parseInt(window.getComputedStyle(canvasBox).height)
            // 幅と高さを2倍に拡大するのは画像がぼやけるのを防ぐためです canvas.width = width * 2
            キャンバスの高さ = 高さ * 2
            canvas.style.width = 幅 + 'px'
            canvas.style.height = 高さ + 'px'
            const コンテキスト = canvas.getContext("2d");
            コンテキスト.スケール(2, 2);
            定数オプション = {
                背景色: null、
                キャンバス: キャンバス、
                CORS の使用: true
            }
            html2canvas(canvasBox, オプション).then((canvas) =​​> {
                // toDataURL 画像形式を base64 に変換
                dataURL = canvas.toDataURL("image/png") とします。
                コンソールログ(データURL)
                this.downloadImage(データURL)
            })
        },
        //画像をダウンロード downloadImage(url) {
            // ウェブページ上にある場合は、直接ダウンロードするための a タグを直接作成できます。let a = document.createElement('a')
            a.href = URL
            a.download = 'ホームスクリーンショット'
            クリック()
        },

スクリーンショット範囲内のページの親に ref 属性を追加することを忘れないでください。これにより、キャンバスは親を見つけて、スクリーンショットを撮るための幅と高さを計算できるようになります。

スクリーンショットの結果は次のとおりです。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue を使用して HTML ページから画像を生成する方法
  • Vue を使用して HTML ページから画像を生成する方法
  • Vueのキャンバスを使ってQRコードと画像ポスターの合成を実現する方法
  • Vue3 で HTML 要素をキャンバス (ポスター生成) に変換して、画像を保存/スクリーンショットする方法

<<:  MySQL における between の境界と範囲の説明

>>:  vscode dockerプラグインのdocker.socket権限問題を解決する

推薦する

MySQL データベース開発仕様 [推奨]

最近、問題のある新しい SQL が本番データベースに入力される数を最小限に抑えるために、開発仕様を整...

Dockerがコンテナを起動するたびに、IPとホストが指定した操作が実行されます。

序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...

FileZilla Server の FTP サーバー構成と 425 エラーおよび TLS 警告の解決策の詳細な説明

123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...

適応分析と応答分析の違いを専門用語で詳しく説明

日々の開発経験と関連するオンライン情報に基づいて、アダプティブとレスポンシブの違いをシンプルでわかり...

MySQL 5.7.24 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、参考までにMySQL 5.7.24圧縮パッケージのインストールチュートリアルを紹介しま...

Docker イメージを Docker Hub にプッシュする実装

イメージが正常にビルドされると、Docker 環境があれば使用できますが、イメージを Docker ...

自己終了XHTMLタグを書くときに注意すべきこと

XHTML の img タグはいわゆる自己終了タグであり、XML では完全に合法です。 XHTMLの...

HTML における src と href の違いについての簡単な説明

簡単に言うと、srcは「このリソースをロードしたい」という意味で、hrefは「このリソースに関連付け...

MySQLがブール型を返すいくつかの状況について簡単に説明します。

mysqlはブール型を返します最初のケースでは、直接戻ります select id='22a...

CSS オーバーフローラップの新しいプロパティ値をどこでも使用

1.まず、overflow-wrap属性を理解する CSS のoverflow-wrapプロパティは...

MySQL マスタースレーブレプリケーション切断の一般的な修復方法

目次01 問題の説明02 ソリューション1. 他のスレーブライブラリを見つけてすぐに置き換える2. ...

Vue の computed と watch の違いを理解する方法

目次概要計算された監視プロパティを監視する要約する概要Vue プロジェクトでは、computed と...

WeChatアプレット仮想リストの応用例

目次序文仮想リストとは何ですか?デモ効果準備スクリーンの高さとボックスの高さ最適化要約する序文人気の...