-1

ユーザーが高解像度の画像をサーバーにアップロードします。この画像のサムネイルを作成する必要があります。PHP でサムネイルを作成するために GD を集中的に操作する代わりに、このプロセスを実際にクライアント/ブラウザーにオフロードできますか? 最近の最新のブラウザは、画像を迅速に縮小することをサポートしていますが、そのようなタスクを実行することには多くの短所と長所があると確信しているので、私の質問は...

  1. これはより効率的な方法ですが、サーバー側での GD 操作よりもどれくらい効率的でしょうか?
  2. Ajax経由でサーバーに送信できるように、画像をJPG形式ですばやく保存できるJavascriptライブラリはありますか?
  3. 一般的な注意として、変換はWeb Workers を使用して行われるため、ユーザーのブラウザーには影響しません。
  4. 明らかに、ユーザーはフル サイズの画像とはまったく関係のないサムネイルを悪用して送信する可能性があります。これを回避する良い方法はありますか?つまり、サムネイルとフルサイズの画像がどれだけ似ているかをすばやく計算し、98% 似ている場合は画像を許可しますか?

別のサーバーに完全にオフロードしたり、たとえば午前 3 時にバッチ ジョブを実行したりするなど、おそらくより良い方法があることは理解していますが、最新のブラウザーとその改良された Javascript エンジンの出現により、学術的/情報的な目的で機能する可能性があります。このようにクライアントのブラウザに置くことはできますか?

4

5 に答える 5

2

類似度の計算は、単に迅速なダウンスケールを作成するよりも高速ではない可能性がありますが、これをオフハンドで証明するコードはありません。

考えられる問題として帯域幅が頭に浮かび、ファイルを送受信します。

考えられるアイデアの 1 つは、Flash/Java アプレットを使用してアップロードを処理し、サムネイルを自動的に生成して送信することです。

于 2011-04-01T00:10:55.597 に答える
1

私が行ってきたのは、EXIF サムネイルを含む画像の EXIF サムネイルを取得し、EXIF データを含まない画像の実際のサムネイルのみを作成することです。

あなたの質問に完全に答えるわけではありませんが、それは私の2セントです:-)

編集:複数のサイズにサイズ変更されるため、CRONジョブを介して後で完全に処理するためにすべての画像をまだキューに入れています->最初に心配していたのは、すぐにサムネイルを取得しているだけです。

于 2011-04-01T00:26:20.157 に答える
0

すべてのコメントに感謝しますが、私はこれに対する良い解決策を見つけました:

HTML5:PHPとAjaxを使用したキャンバス画像データの保存


それが実現可能かどうかを判断するために、さらにいくつかのテストを行います。

明らかに、ここでの主なポイント/懸念は次のとおりです。

  • a。誰もが同じブラウザを使用し、同じcanvas / html5機能を使用していることを私は妄想していません。したがって、フォールバックシステムを導入する必要があります。

  • b。ユーザーは、パフォーマンスの異なるブラウザ/マシンを使用しています。したがって、これは、大きな画像を使用してサムネイルサイズに縮小する場合に注意する必要があります。

  • c。ブラウザ/クライアントからガベージデータ/エクスプロイトが送信された場合は、それを回避します(実際、人々はフルサイズの画像のガベージデータをアップロードできますが、そのユーザーの意図があればそもそもサイトを台無しにして、彼らは常に方法を見つけるでしょう

パフォーマンスの向上を確認し、ここに報告するために、いくつかのテストを行います。

于 2011-04-01T07:41:02.377 に答える
0

1 秒あたりのアップロード数が多すぎて、負荷をブラウザに分散しなければならなくなるのでしょうか?

ImageMagickはサイズ変更を簡単に処理でき、それが本当に必要な場合でも、別のマシンにスレッド化またはオフロードできます。

とにかくネットワーク転送のオーバーヘッドで失われる可能性があるものを最適化する前に、これを負荷テストする必要があります。

于 2011-04-01T00:21:20.140 に答える
0

クライアント/サーバー側を台無しにしていると思います。Javascript はサムネイルを生成できません。ブラウザをスケーリングに委任したい場合は、画像の幅/高さを設定するだけです

于 2011-04-01T00:24:35.263 に答える