jsはCanvasを使用して複数の画像を1つの実装コードにマージします

jsはCanvasを使用して複数の画像を1つの実装コードにマージします

解決

関数 mergeImgs(リスト) {
 const imgDom = document.createElement('img')
 document.body.appendChild(画像Dom)

 const キャンバス = document.createElement('キャンバス')
 キャンバス幅 = 500
 キャンバスの高さ = 500 * リストの長さ
 定数コンテキスト = canvas.getContext('2d')

 リスト.map((項目, インデックス) => {
 const img = 新しい画像()
 img.src = アイテム
 // クロスドメイン img.crossOrigin = 'Anonymous'
 
 img.onload = () => {
  context.drawImage(画像, 0, 500 * インデックス, 500, 500)
  const base64 = canvas.toDataURL('image/png')
  imgDom.setAttribute('src', base64)
  // コンソール.log(ベースリスト)
 }
 })
}

定数urlList = ['./img/timg%20(1).jpg', './img/timg.jpg']
画像をマージします(urlList)

コードを少し最適化し、パブリックメソッドに変更します

/**
 * 複数の画像を結合して新しい画像を返します * @param {Array} list 画像の URL 配列 * @param {Number} cwith キャンバスの幅はデフォルトで 500 です
 * @param {Number} cheight キャンバスのデフォルトの高さは500です
 */
関数 mergeImgs(リスト、cwith = 500、cheight = 500) {
 新しい Promise を返します ((resolve, reject) => {
 定数ベースリスト = []

 const キャンバス = document.createElement('キャンバス')
 キャンバス幅 = cwith
 キャンバスの高さ = 高さ * リストの長さ
 定数コンテキスト = canvas.getContext('2d')

 リスト.map((項目, インデックス) => {
  const img = 新しい画像()
  img.src = アイテム
  // クロスドメイン img.crossOrigin = 'Anonymous'

  img.onload = () => {
  context.drawImage(画像、0、高さ * インデックス、高さ、高さ)
  const base64 = canvas.toDataURL('image/png')
  baseList.push(base64)

  (baseList[リストの長さ - 1])の場合{
   コンソール.log(ベースリスト)
   // 新しい画像を返すresolve(baseList[list.length - 1])
  }
  }
 })
 })
}

定数urlList = ['./img/timg%20(1).jpg', './img/timg.jpg']
mergeImgs(urlList).then(base64 => {
	const imgDom = document.createElement('img')
	imgDom.src = base64
	document.body.appendChild(画像Dom)
})

効果

ここに画像の説明を挿入

これで、Canvas を使用して複数の画像を 1 つに結合する js の実装コードに関するこの記事は終了です。より関連性の高い js キャンバス画像結合コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。

以下もご興味があるかもしれません:
  • js+ca​​nvasは2枚の画像を1枚の画像に結合する方法を実現します
  • jsはキャンバスによって生成された画像を保存するか、直接画像を保存します
  • js は、画像を png 形式で保存し、ローカルにダウンロードするためのキャンバス メソッドを実装します。
  • JSモバイル/H5は複数の画像を選択して同時にアップロードし、キャンバスを使用して画像を圧縮します
  • js+html5を使用してキャンバスに絵を描く方法

<<:  Windows システムに MySQL を素早くインストールして展開する方法 (グリーンの無料インストール バージョン)

>>:  負荷分散の基礎知識とnginxを使用した負荷分散の簡単な例

推薦する

CentOS サーバーのセキュリティ構成戦略

最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...

JavaScript の実行コンテキストとコールスタックの詳細な説明

目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...

Linux 論理ボリューム管理 (LVM) の使用法の概要

ディスク領域の管理は、システム管理者にとって重要な日常的なタスクです。ディスク領域が使い果たされると...

docker run 起動パラメータ コマンドを表示する方法 (推奨)

runlike を使用してコンテナの docker run 起動パラメータを表示します。 pipを...

サーバー上で selenium+chromedriver を実行するための詳細なチュートリアル

1. はじめにSelenium を使用して Web サイトからデータをスクレイピングしたいのですが、...

ボタンのタイプが送信として指定されていません。ボタンをクリックしても、指定された URL にジャンプしません。

現在、プロジェクトの要件により、フォームの送信を制御し、送信前にデータを検証および処理するために j...

集める価値のある 15 個の JavaScript 関数

目次1. 数字を逆にする2. 配列内の最大のn個の数値を取得する3. 階乗を計算する4. 現在の動作...

Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

ここでは、Linux プラットフォームでの Zabbix エージェントのインストールと構成について簡...

MySQLのUPDATE文の落とし穴を記録する

背景最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていました...

MySQL複合インデックスの詳細な研究

複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...

JavaScriptで配列かどうかを判断するためのさまざまな方法のまとめ

目次序文配列.isArrayコンストラクタインスタンスプロトタイプオブジェクト.プロトタイプ.toS...

知らないかもしれないmysqldumpパラメータ

前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...

複数のdiv内のテーブルのtdwidth設定は同じで、揃えることができません

最近、複数のdivにあるテーブルのTDを同じ幅に調整しても、揃えることができず、幅にパターンがないこ...

WeChatアプレットで数字当てゲームを実装する実際のプロセス

目次機能紹介レンダリング1. ホームページレンダリング用のコード(index03) 2. ゲーム開始...

MySQL で重複レコードを見つけて削除する方法

みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。何らかの歴史的な理由や誤操作...