web-dev-qa-db-ja.com

クライアント側とサーバー側の画像のサイズ変更

大量の画像をサーバーにアップロードする場合、画像が占めるスペースを最小限に抑えるために、サーバーに送信する前に、または受信時に画像のサイズを変更する方が良いですか?

JavaScriptでそれらのサイズを変更すると、それほど多くの利点が得られない場合、長い時間がかかる可能性があります。クライアント側でそれを行うことには何か価値がありますか?

編集:

バックエンドはJavaであり、サーバーには複数のユーザーが一度に画像やその他のファイルをロードする可能性があります。

3
Alex

速度の観点から見ると、お使いのコンピューターは、Webサイト/ Webアプリケーション用のサーバーよりもはるかに高速ですサーバーよりもクライアントでリサイズする方が理にかなっています。

Javaアプリケーションで、特定の色のピクセルを別の色に変更し、画像のサイズを小さくします。その操作全体で、変換に画像あたり約0.005秒かかります。


しかしながら:

あなたはクライアントとしてJavascriptについて尋ね、そこでサイズを変更しています。 Javascriptが画像のサイズを変更できる速さ、またはそれを行うのがどれほど簡単かわからないので、サーバーでそれを実行する方が高速かもしれません(JavaタグからJavaバックエンド)を使用していますか?


しかしながら...:

アプリの機能によっては、サーバー上で実行する作業が多すぎる場合があります(多くのユーザーがサーバーリソースに負担をかけている場合)。


サーバーの負荷を抑えたい場合で、サーバーに十分な電力がない場合は、クライアントで実行します。

大きな負荷を処理できるサーバーがあり(必要な場合)、多くの変換を実行するのに十分なパワーがある場合は、サーバーで実行します。


全体として、答えは自分で試してみて、環境をテストし、自分にとって最も効果的なものを見つけることです。

1万人の異なるユーザーから100万枚の画像を同時にアップロードでき、サーバーはそれを笑います。

または、自分で100枚の画像をアップロードすると、サーバーが泣き始めます。

多くのユーザーに必要ですか?自分だけ?あなたは言うのに十分な情報を提供しなかったので、あなたがそうしたら、私は私の答えを更新します...

お役に立てれば。


追加情報。

ほとんどの場合、サイズを変更するためにサーバーに画像を送信するときは、

  1. 最初に画像を保存し、サーバーで画像を読み取り、

  2. サイズ変更、

    次にどちらか

  3. 上書き、

    または

  4. 古いを削除

  5. 新しいものを保存します。

    データをストリームとして送信してサーバーで読み取ることができない場合、これには時間がかかる可能性がありますが、JavaScriptのその機能については不明です。

それがすべてクライアントで行われる場合、イメージを保存するのは1回だけです。

3
XaolingBao

ディスクスペースが唯一の制約である場合、どちらの端がイメージのサイズを変更してもかまいません。クライアントの処理速度はサーバーよりも若干遅い場合や、サーバーが過負荷になって多くの画像を送信する場合があるため、予想される使用パターンに基づいて判断する必要があります。

ただし、クライアントでのサイズ変更には、ネットワーク転送という1つの理由があります。サムネイルにサイズ変更されるマルチメガバイトのカメラ画像をアップロードする場合(たとえば、極端な場合)、クライアントでのサイズ変更はより速く、より効率的になります-大きな画像を転送するのにかかる時間はサイズ変更操作自体がサーバー上でより高速である場合でも、サイズ変更されたイメージから生じるいくつかのKbのサイズ変更および転送に必要なものよりはるかに大きい可能性があります。

4
gbjbaanb