最初にページ上の 1 つの画像でこれをテストすることにし、複数の画像を予測するために乗算計算を行いました。私は注意する必要があります:
- このテストにはpngを使用していましたが、pngはかなり標準的なようです。
- サイズを変更した画像の元の縦横比に常に合うように、
width
apativeが画像のサイズを変更する特定の関数を使用していました。height
450x450 (おおよそ) の画像を取得し、クライアント側で 200x200 にサイズを変更することにしました (この回答のすべての測定値はピクセルです)。サイズ変更が画像の合計サイズの半分以上であるにもかかわらず、CPUジャンプはほとんどありませんでした。
Chrome、Opera、Firefox、IE など、すべての最新ブラウザで品質も良好で、Photoshop や GD で行った場合と同じくらい鮮明な画像が表示されました。
IE7 では、CPU ジャンプの多くに気付かず、画像サイズの制約に基づいてパーセンタイル サイズ変更を使用した場合、品質は良好でした。
全体として、このサイズのキャッシュサーバー側でも作成するために必要な追加のストレージ、計算、およびコーディングは、ユーザー側で暗示される可能性のある能力にとって不利であるように思われました.
そうは言っても、このタイプのサイズ変更を複数回(私の質問のように20回と言う)やり始めると、おそらく問題が発生し始めるでしょう。
少し調整した後、画像の幅または高さが 1000px 未満であれば、元の画像サイズの 1/3 未満のものは、CPU および一般的なコンピューターのパフォーマンスにとって無視できるように思われることがわかりました。
私が使用していた追加機能を使用すると、サーバー側と同じようにクライアント側のサイズを変更しても品質が向上しました。私が(利害関係者のために)使用した特定の機能は次のとおりです。
function pseudoResize($maxWidth = 0, $maxHeight = 0){
$width = $this->org_width;
$height = $this->org_height;
$maxWidth = intval($maxWidth);
$maxHeight = intval($maxHeight);
$newWidth = $width;
$newHeight = $height;
// Ripped from the phpthumb library in GdThumb.php under the resize() function
if ($maxWidth > 0)
{
$newWidthPercentage = (100 * $maxWidth) / $width;
$newHeight = ($height * $newWidthPercentage) / 100;
$newWidth = intval($maxWidth);
$newHeight = intval($newHeight);
if ($maxHeight > 0 && $newHeight > $maxHeight)
{
$newHeightPercentage = (100 * $maxHeight) / $newHeight;
$newWidth = intval(($newWidth * $newHeightPercentage) / 100);
$newHeight = ceil($maxHeight);
}
}
if ($maxHeight > 0)
{
$newHeightPercentage = (100 * $maxHeight) / $height;
$newWidth = ($width * $newHeightPercentage) / 100;
$newWidth = ceil($newWidth);
$newHeight = ceil($maxHeight);
if ($maxWidth > 0 && $newWidth > $maxWidth)
{
$newWidthPercentage = (100 * $maxWidth) / $newWidth;
$newHeight = intval(($newHeight * $newWidthPercentage) / 100);
$newWidth = intval($maxWidth);
}
}
return array(
'width' => $newWidth,
'height' => $newHeight
);
}
したがって、私自身のテストから、使用するすべての画像のすべてのサイズを収容しているように見えます。つまり、質問で尋ねたように:
はいの場合、サーバー側の処理とキャッシングが過剰になる場合はありますか (つまり、110x220、120x230、150x190 などの 8 つの画像を格納するなど)?
現代のコンピューティングではやり過ぎのように思われます。多くの異なるサイズの多くの画像を使用する場合は、厳密な測定を行う必要があります。
ただし、サイズの標準セットがあり、それらが小さい場合、実際にはサーバー側のサイズ変更とすべてのサイズのストレージに利点があることがわかりました。クライアントにサイズ変更を強制すると、常にコンピューターの速度が少し低下しますが、元のサイズの 3 分の 1 のサイズでも、それほど大きな違いはないようです。
したがって、FB や Google や Youtube などのサイトがすべての画像の正確な測定値を保存することについてあまり心配していない理由は、「測定値に近い」スケーリングが全体的にパフォーマンスが向上する可能性があるためだと思います。