2017-03-18 120 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

一个非常简单而有用的解决方案! –

相关问题