PHP で大きな画像の比例サムネイルを作成するにはどうすればよいですか?

DDD
リリース: 2024-11-05 19:29:02
オリジナル
750 人が閲覧しました

How to Create Proportional Thumbnails in PHP for Large Images?

PHP で拡大縮小されたサムネイルを作成する

提供されたコード スニペットは、指定された寸法内で画像を正常にトリミングします。ただし、画像が大きい場合は、期待どおりの結果が得られない場合があります。この問題に対処するには、最初に画像のサイズを変更し、サイズ変更された画像の小さい方の寸法がサムネイルの対応する寸法と一致することを確認する必要があります。

比例サムネイルを作成するには、次の手順に従います。

  1. ソース画像と目的のサムネイルのアスペクト比を決定します。
  2. アスペクト比を比較します。ソース画像の幅が広い場合は、それに応じて新しい高さと幅を計算します。逆に、サムネイルの幅が広い場合は、新しい幅と高さを計算します。
  3. 計算された寸法で新しい画像を作成します。
  4. リサンプリング操作を実行して、新しい寸法に合わせてソース画像のサイズを変更します。アスペクト比を維持しながら。
  5. サイズ変更した画像を指定したサムネイルの寸法にトリミングします。
  6. トリミングした画像をサムネイルとして保存します。

更新されたコード例は次のとおりです。これは次の手順を実装します:

<code class="php">$image = imagecreatefromjpeg($_GET['src']);
$filename = 'images/cropped_whatever.jpg';

$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
   // If image is wider than thumbnail (in aspect ratio sense)
   $new_height = $thumb_height;
   $new_width = $width / ($height / $thumb_height);
}
else
{
   // If the thumbnail is wider than the image
   $new_width = $thumb_width;
   $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically
                   0, 0,
                   $new_width, $new_height,
                   $width, $height);
imagejpeg($thumb, $filename, 80);</code>
ログイン後にコピー

画像のサイズ変更をサムネイル生成プロセスに組み込むことにより、元の画像のサイズに依存せず、均整のとれたサムネイルを作成できます。

以上がPHP で大きな画像の比例サムネイルを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート