-1

サイトにサムネイルとして表示される画像があります。サムネイルのサイズは大きく異なります。理想的には、各サムネイルのサイズで各写真のコピーを保存する必要はありません。むしろ、PHP で最終的なサイズを指定し、サーバーから送信される前に画像のサイズを変更することができます。

サーバーにアップロードされているときに写真のサイズを変更しようとしていません。サムネイルのサイズごとに画像を保存することができません。

問題は、ページ レイアウトによってサムネイルのサイズが異なることです。そのため、画像を各サムネイル サイズで保存すると、手持ちの約 20 倍の写真が保存されます。

「小」「中」および「大」の画像を保存しようとしましたが、サムネイルのサイズに最も近いものを呼び出します。少し大雑把に見えましたが、これが適切な方法のようです。

4

3 に答える 3

3

以前に投稿したように、これは多くのリソースを消費する可能性があり、ディスクに保存する方が通常は優れていますが、本当にしたい場合は、これを試してください:

<?php

function createThumbnail($filename, $thumbWidth){
    $details = getimagesize($filename);
    $content = file_get_contents($filename);
    $srcImg = imagecreatefromstring($content);
    $thumbHeight = $details[1] * ($thumbWidth / $details[0]);
    $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
    imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $details[0], $details[1]);
    imagejpeg($thumbImg, null, 100);
    imagedestroy($srcImg);
    return $thumbImg;
}

header("Content-Type: image/jpeg");
echo createThumbnail("/path/to/image.jpg", 200);
于 2012-12-27T20:32:48.430 に答える
3

ディスク容量を使い果たしたくないので、CPU リソースを使い果たします。これはさらに悪いことです。サムネイルをディスクに保存できないと思っ
ていて も、保存する必要があります。他に方法はありません。時間を無駄にするだけで、最終的には適切なセットアップに取りかかることになります。

于 2012-12-27T20:26:10.207 に答える
-1

もちろん、これを行う最善の方法は、画像サイズを計算し、次のimgような適切な属性を持つタグを返すことです。

"<img width=\"" . $width . "px\" height=\"" . $height . "\" src="..."/>"

「その場で」画像のサイズを変更するには、時間がかかりすぎます。20 枚の画像を表示し、それぞれが 150 ミリ秒を消費してスケーリングされる場合を考えてみましょう (画像のサイズと倍率によって異なります)。これは、1 ページを表示するのに約 3 秒以上かかります。ページのコンテンツが表示されるまで、ユーザーをそんなに長時間待たせるつもりですか?

于 2012-12-27T20:56:55.723 に答える