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

推薦する

グリッドはページのレイアウトプランです

<br /> 英語原文: http://desktoppub.about.com/od/...

ノード スキャフォールディングを使用してトークン検証を実装するサーバーを構築する方法

コンテンツスキャフォールディングを使用してノードプロジェクトを素早く構築するデータベースとやり取りす...

Vue2.x の応答性の簡単な説明と例

1. Vue レスポンシブの使用法を確認する​ Vue の応答性は、私たち全員がよく知っています。 ...

CentOS 8で自動更新を設定するための手順を完了する

データとコンピューターに対してできる最善のことは、それらを安全に保つことです。アップデートを有効にす...

Ubuntuはカーネルモジュールをコンパイルし、その内容はシステムログに反映されます。

目次1.Linuxログインインターフェース2. コードを書く3. Makefileを書く4. コンパ...

MySQL ストアド プロシージャで case ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの case ステートメントの使用方...

背景とリンクとして画像を書き込む方法(背景画像+リンク)

写真を背景にしてリンクを記載します。たとえば、ウェブサイトのロゴ画像などです。例: ポテトのロゴ画像...

自動検索提案機能のスタイルファイルを入力します: suggestion.css

コードをコピーコードは次のとおりです。 .sugLayerDiv{位置:相対; overflow:h...

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

HTML の順序なしリストタグと順序付きリストタグの使用例

1. 上部と下部のリストタグ: <dl>..</dl>:上dt下層dd: カ...

MyBatis 動的 SQL の包括的な説明

目次序文動的SQL 1. まずモジュールのディレクトリ構造を見てみましょう2. 物理モデリングと論理...

js配列の基本的な使い方のまとめ

序文配列は特別な種類のオブジェクトです。 js には実際の配列はなく、オブジェクトを使用して配列をシ...

Vue Notepadの例の詳細な説明

この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...

mysql8.0.18 で winx64 をインストールするための詳細なチュートリアル (画像とテキスト付き)

MySQLデータベースをダウンロードするには、https://dev.mysql.com/down...

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使...