首頁  >  文章  >  後端開發  >  如何在 PHP 中為大圖像建立比例縮圖?

如何在 PHP 中為大圖像建立比例縮圖?

DDD
DDD原創
2024-11-05 19:29:02683瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn