2017-03-18 117 views
0

我有這個PHP腳本,調整大小的圖像,以50%(或任何預設百分比)PHP圖像的寬高比調整

$filename = 'test.jpg'; 
$percent = 0.5; 

// Content type 
header('Content-Type: image/jpeg'); 

// Get new dimensions 
list($width, $height) = getimagesize($filename); 
$new_width = $width * $percent; 
$new_height = $height * $percent; 

// Resample 
$image_p = imagecreatetruecolor($new_width, $new_height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

// Output 
imagejpeg($image_p, null, 100); 

現在,如果我要指定$ new_width爲1200(像素),並告訴自動計算的$ new_height保持縱橫比,並設置新圖像的名稱爲「test-2.JPG」

$filename = 'test.jpg'; 

// Content type 
header('Content-Type: image/jpeg'); 

// Get new dimensions 
list($width, $height) = getimagesize($filename); 
$new_width = 1200; 
$new_height = // MUST BE AUTO; 

// Resample 
$image_p = imagecreatetruecolor($new_width, $new_height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

// Output 
imagejpeg($image_p, null, 100); 

回答

2

「保持縱橫比」 指的是下面的等式必須成立:

$new_height/$new_width == $height/$width 

因此,用於計算新的高度的等式爲:

$new_height = ceil($height * ($new_width/$width)); 

注意ceil確保新的高度是一個整數值,至少爲1(假設新的寬度和舊的寬度+高度都是正數)。

2

這是什麼意思?

// Get new dimensions 
list($width, $height) = getimagesize($filename); 
$new_width = 1200; 
$new_height = ($height/$width)*$new_width; 
+0

一個非常簡單而有用的解決方案! –

相關問題