0

PHPに画像のサイズをサムネイルに変更する関数があります。画像アップロードスクリプトは、アップロードされた画像を取得し、この関数を実行して、画像の幅が700pxを超える場合は画像のサイズを変更し、さらに2回実行して、2つの異なるサイズのサムネイルを作成します。画像があるため、ユーザーが画像をアップロードするたびに合計3つの画像が保存されます。サイズ変更/サムネイル機能は、サムネイルに対して2回呼び出され、ファイルのサイズが広すぎる場合は3回呼び出されることがあります。

現在、このサイズ変更関数はgetimagesize()を使用して寸法を取得しているため、uplaodスクリプトはこの関数を呼び出し、次にサイズ変更関数はgetimagesize()関数をさらに2〜3回使用して他のサイズの画像を作成します。

アップロードプロセスでディメンションを取得するので、サイズ変更関数にディメンションを渡すだけでよいと思いますか?

私の本当の質問は、getimagesize()はリソースを大量に消費する機能ですか、少なくとも可能な限り使用するのが最善でしょうか、それとも1つの画像が正常にアップロードされたときに数回呼び出すのでしょうか。

4

5 に答える 5

3

ヒント/注意点として、GD関数を使用していると思います。複数のサムネイルを作成する場合、通常のボトルネックは誤って実装された画像サイズ変更機能です。元の画像を読み取ってから、サイズ変更された画像を保存するたびに。より良い方法は、画像を1回ロードし、画像リソースを使用してすべてのサムネイルを作成することimagecopyresampledです。画像の寸法を関数に渡すだけでなく、GD参照も渡します。元のファイルが一度だけロードされる方法。

于 2009-08-14T20:05:27.347 に答える
2

アップロード時にのみ実行されるものの場合、それほど気にする必要はありません。アップロードは、ユーザーが超高速の応答を期待するアクションではありません。時期尚早の最適化はすべての悪の根源です

そうは言っても、getimagesize()特に費用はかかりませんが、一度だけ呼び出すことができる場合はそうしてください。しかし、私はそれほど速度が上がるとは予測していません。スクリプトのコストのかかる部分は、画像自体のサイズ変更です。

于 2009-08-14T19:19:06.300 に答える
1

特にリソースを消費するわけではありません。ファイルを開いて画像ヘッダーを読み取る必要があります。

最適化するために邪魔にならないでください。簡単な場合は、それを実行してください。それ以外の場合は、最適化する前に、アプリケーションの実際のボトルネックがどこにあるかを確認してください。

于 2009-08-14T19:19:08.533 に答える
0

最善の方法は、スクリプトのプロファイルを作成することです。

特定の状況に当てはまらないかもしれない理論的な答えの代わりに、あなたは本当の答えを得て、それは本当に有益です。

また、この習慣を使用すると、次のことができるようになります。

  • ボトルネックを発見する
  • マイクロ最適化とメジャー最適化を区別します。

私は個人的に開発します。Windowsで、*nixにデプロイします。

私のdevdoxでは、xdebug+WinCacheGrindを使用して結果を読み取ります。

私は彼らなしでは生きられませんでした。:)

http://elrems.wordpress.com/2008/02/12/profiling-php-with-xdebug-and-wincachegrind/

于 2009-08-14T19:55:12.173 に答える
0

アップロード部分は、画像のサイズを変更する場所ではないと思います。後でcronジョブとして画像のサイズを変更する必要があります。imagemagickやその他のサイズ変更アプリケーションなどのサードパーティアプリケーションを使用して、画像のサイズを変更できます。そうすれば、フロントエンドの時間を節約できます。サイズ変更ジョブは約5分ごとに実行できます。

于 2009-08-14T20:16:55.997 に答える