[解決済み] imgタグの付いたdivを画像に変換する方法
2022-01-29 11:46:56
質問
いくつかのimgタグを含むdivをpngに変換しようとしています。検索してみたところ、html2canvasライブラリを使用するのが一番良いようです。
問題は、それが私のために動作していないことであり、私は理由を理解していない。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css">
<script src="lib/js/Blob.js"></script>
<script src="lib/js/canvas-to-blob.min.js"></script>
<script src="lib/js/FileSaver.js"></script>
<script src="lib/js/html2canvas.js"></script>
<script src="lib/js/jquery.min.js"></script>
<script src="lib/js/underscore-min.js"></script>
<title>Tests Only</title>
</head>
<body>
<div id="navigationButtons">
</div>
<div id="sourceScreen" style="width:200px">
<img id="lol" src="tier-icons/base_icons/bronze.png" />
</div>
<div id="targetScreen">
</div>
<script = "text/javascript">
jQuery('#navigationButtons').append('<button type="button" id="makeScreenshot">Screenshot</button>');
jQuery('#makeScreenshot').click(makeScreenshot);
function makeScreenshot(){
html2canvas(jQuery('#sourceScreen'), {
onrendered: function(canvas) {
jQuery('#targetScreen').html(canvas);
}
});
}
</script>
</body>
</html>
以下は、私のコードのjsFiddleです。 https://jsfiddle.net/2vv79ehy/1/
この例では、まず1つのimgタグで動作させようとしています。目標は、実際の画像の下にキャンバスを表示することです。 私はこのライブラリのクロスドメインリソースの問題があることを知っているが、私の実際のコードでテストを行うとき、画像は私のコンピュータでホストされています。
どなたか方法をご存知の方、または他の方法があれば教えてください(クロスドメインの問題も回避できれば最高です)。
解決方法は?
あなたのJSFiddleは、クロスドメインの問題を除いては、動作します。この問題を素早く回避する方法を探してみましたが、私が思いついた最善の方法は、あなたが
onrendered
また、位置決めもあまり弄っていませんし、Zオーダーもこの方法では無理でしょう。
makeScreenshot
関数は、あなたに合った解決策を見つけるのに役立ちます。
function makeScreenshot(){
html2canvas(jQuery('#sourceScreen'), {
onrendered: function(canvas) {
var img = jQuery("#cat");
var ctx = canvas.getContext("2d");
var originalPosition = { left: 0, top: 18 };
ctx.drawImage(img[0],originalPosition.left,originalPosition.top);
jQuery('#targetScreen').html(canvas);
}
});
}
関連
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列を整数に変換する方法は?
-
[解決済み] JavaScriptで10進数から16進数へ変換する方法
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] jQueryを使用してdivのinnerHTMLを置き換えるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】Angular JS Uncaught Error。[インジェクター:モジュラー]。
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】SyntaxError: 期待された式が、'<'を得た。
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない