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権限問題を解決する

推薦する

レスポンシブ原則をシミュレートするための基礎コードの Vue 実装の例

目次1.Vue.js の機能: 2.Observer.js 関数 (データハイジャック): 3. C...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

HTMLのリストタグを数える

1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...

MySQL における exists、in、any の基本的な使い方

【1】存在するループを使用して外部テーブルを 1 つずつクエリし、各クエリの存在する条件ステートメン...

HTML+CSS でハートビートの特殊効果を作成する

今日は、シンプルなハートビート効果を作成します。多くのコードは必要ありません。ボックスを追加し、CS...

Vueでミックスインを使用する方法

目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...

mysql5.7.18 解凍バージョンで mysql サービスを起動します

mysql5.7.18の解凍版はmysqlサービスを起動します。具体的な内容は以下のとおりです。 1...

フレックスレイアウトが子要素によって引き伸ばされたときに、コンテンツをコンテナ内に保持する方法

モバイル デバイスでは、フレックス レイアウトが非常に便利です。デバイスの幅に応じてコンテナーの幅を...

MySQL インデックスが失敗するいくつかの状況の概要

1. インデックスはnull値を保存しないより正確に言うと、単一列インデックスには null 値は格...

MySQL 5.7.16 無料インストール版のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 5.7.16のインストールと設定方法を記録します。具体的な内容は以下のとおり...

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

Windows システムに mysql5.7.21 をインストールするための詳細なチュートリアル

MySQL インストーラーは、MySQL ソフトウェアのあらゆるニーズに対応する、使いやすいウィザー...

Dockerコンテナレイヤーの概念の詳細な説明

目次01 コンテナの一貫性02 レイヤーの概念03 レイヤードデザインの利点今日はコンテナ レイヤー...

MySQLスレーブのメンテナンスに関する経験の共有

序文: MySQL マスター/スレーブ アーキテクチャは、最も一般的に使用されるアーキテクチャ セッ...

jQueryは要素を追加した後に元のイベントが実行されない問題を解決します

まずエラーコードを見てみましょう。 html: <テーブルボーダー="1"...