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を使用した負荷分散の簡単な例

推薦する

MySQL の時間タイプの選択

目次日時タイムスタンプ選び方ミリ秒の時間を保存する方法結論MySQL は、日付と時刻を処理するために...

HTML に FLASH へのリンクを追加し、すべての主要ブラウザと互換性を持たせる方法

まずコードを見てみましょうコードをコピーコードは次のとおりです。 <div style=&qu...

あなたを救うために、私のテーブルは何を使えばいいでしょうか (Haiyu Blog)

テーブルはかつて、Web ページの開発、つまりレイアウトにおいて非常に重要な役割を果たしていました。...

Centos7にTenda U12ワイヤレスネットワークカードドライバーをインストールする際の問題を解決する

解決プロセス:方法1: CentOS7.3 のデフォルトのカーネル バージョンは低く、3.10.0-...

MySQL における datetime と timestamp の違いと使い方

1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか?実際、表現方法はいろいろありま...

Alibaba Cloud ServerにMySQLデータベースをインストールする方法の詳細な説明

序文学習中に Zookeeper をインストールする必要があったため、仮想マシンに常に問題が発生した...

CSS で背景ぼかし効果を実装するサンプルコード

以下のような効果でしょうか?もしそうなら、ぜひ読み進めてください! コードデモンストレーション(上の...

mysql5.7 のエンコーディングを utf8mb4 に設定する方法

最近、問題に遭遇しました。モバイル端末の絵文字や一部の絵文字は 4 バイトですが、UTF-8 は 3...

MySQL の完全なデータベース バックアップ データを使用して単一のテーブル データを復元する方法

序文データベースをバックアップするときは、データベース全体のバックアップを使用します。ただし、何らか...

SSH ポート転送とは何ですか?何の役に立つの?

目次序文1. ローカルポート転送2. リモートポート転送3. 動的ポート転送(SOCKS5) 4. ...

XHTML+CSS Web ページ作成における美しいスタイルシートの適用

これはかなり前に書かれた記事です。今となっては、その中の考え方は学ぶ価値があるように思えます。jb5...

CSS スタイルの読み込みの優先順位に関する経験の共有

昨日のプロジェクト開発中に、スタイルの読み込み優先順位に関する問題が発生しました。クラスは定義され、...

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

レスポンシブWebデザイン学習(3) - モバイルデバイスでのWebページのパフォーマンスを向上させる方法

序文モバイル デバイスでは、帯域幅とプロセッサ速度の制限により、Web ページのパフォーマンスに対す...

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...