html2canvasで画像が正常にキャプチャできない時の解決方法

html2canvasで画像が正常にキャプチャできない時の解決方法

質問

まず、私が遭遇した問題についてお話しします。まず、そういった需要があるわけです。フロントエンドは、バックエンドから送信されたデータに基づいて画像を動的に生成する必要があります。画像内のテキスト、背景画像、ユーザーアバターはすべてバックエンドインターフェースを通じて取得されます。ただし、html2canvas によって生成されたキャンバスを使用して、キャンバス内にいくつかの画像が正常に生成されました。しかし、一部の写真はどうしても表示できません。

公式ドキュメント

私は長い間プロジェクトに取り組みましたが成功せず、長い間 Google で検索しましたが成功しませんでした。この瞬間、少し絶望がありました。突然、公式サイトに行ってみようかと思いつきました。そこで公式サイトで以下のような内容を見ました。

制限事項<br/>
スクリプトが使用するすべての画像は、プロキシの助けを借りずに読み取ることができるように、同じオリジンの下に存在している必要があります。同様に、クロスオリジン コンテンツによって汚染された他のキャンバス要素がページ上にある場合、それらは汚れたものとなり、html2canvas で読み取れなくなります。<br/>
スクリプトは、Flash や Java アプレットなどのプラグイン コンテンツをレンダリングしません。

それは何についてですか?英語が苦手な人のために翻訳を載せておきます。英語が得意な方は上記のテキストを直接読んでいただけます。一般的な意味は、html2canvas ではスクリプトを使用して操作する、つまりスクリプトを使用して HTML をキャンバスに変換するということですが、クロスソース イメージを使用できないという制限があります。使用すると、html2canvas はリソースを読み取りません。

このため、変換されたキャンバス上の一部の画像は常に空白になります。ページ上にクロスオリジン画像リソースを使用する他のキャンバスがある場合、html2canvas はそれらを読み取りません。

解決

静的リソースを一度転送し、html2canvas 構成でクロスオリジン リソースの読み込みを許可します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  Dockerは単一のイメージを使用して複数のポートにマッピングします

>>:  JavaScript で知らない Object.entries の使い方

推薦する

resizeを使用して画像切り替えプレビュー機能を実装する方法

要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...

CSS3入力ボックスの実装コードはGoogleログインのアニメーション効果に似ています

CSS3を使用して、Googleログインページと同様の入力ボックスをアニメーション化します。効果1 ...

nginxとIISで使用できるSSL証明書を作成する

目次SSL証明書の作成1. 秘密鍵を生成する2. 証明書要求ファイルを生成する3. CRT証明書ファ...

MySQL における 10 進数型の使用法の簡単な紹介

MySQL でサポートされている浮動小数点型は、 FLOAT 、 DOUBLE 、およびDECIMA...

上位Nを見つけるためのMySQLグループソートの詳細な説明

MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...

CSSを使用して、頻繁に表示される奇妙なボタンを簡単に実装します。

背景グループでは、CSS を使用してインセット コーナー ボタンを実装する方法や、矢印付きのボタンを...

js で継承を実装する 5 つの方法

コンストラクタの借用この手法の基本的な考え方は単純です。サブタイプ コンストラクター内からスーパータ...

JavaでTomcatサーバーを起動/停止する方法

1. プロジェクト構造 2.Tomcat.javaを呼び出す パッケージ com.calltomca...

Vue3とElectronを使ったデスクトップアプリケーションの詳しい説明

目次Vue CLIはVueプロジェクトを構築しますVue プロジェクトをマークダウン エディターに変...

MySQLのトランザクション管理操作の詳細な説明

この記事では、MySQL のトランザクション管理操作について説明します。ご参考までに、詳細は以下の通...

MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

序文長い間、MySQL のアプリケーションおよび学習環境は MySQL 5.6 以前のバージョンであ...

Element-ui の組み込み 2 つのリモート検索 (ファジークエリ) の使用方法の説明

問題の説明フロントエンドリモート検索やファジークエリと呼ばれる種類のクエリがあります。 Ele.me...

Vue+express+Socketでチャット機能を実現

この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考...

MySQL の DDL と DML についての簡単な説明

目次序文1. DDL 1.1 データベース操作1.2 データテーブルの操作1.3 一般的なデータ型1...

フロントエンドセキュリティの詳細な説明: JavaScript の http ハイジャック対策と XSS

目次HTTP ハイジャック、DNS ハイジャック、XSS HTTPハイジャックDNSハイジャックXS...