使用(4:3)PHP调整图像大小

时间:2017-10-10 05:39:55

标签: php image

在我管理的页面中,用户可以上传任意维度的图像,不超过1 MB的空间。我想相对于240x180像素调整图像的大小,但不会破坏图像的纵横比(或者至少它不会大幅扭曲)。我当前的代码只强制更改图像:

$img = imagecreatetruecolor ($width, $height);
imagecopyresampled ($img, $original_img, 0,0,0,0, $width, $height, $wimg, $h_img);

我希望生成一个图像(当它是这种情况时)与加载的关系相同,但小于$width$height目标,并且仍然填充黑色margo。

“就像我有黑色背景并将图像置于”

中心

1 个答案:

答案 0 :(得分:1)

如果我的理解是正确的,这将给出imagecopyresampled

的值
<?php

$x = 1000 ; //sample width
$y = 768 ;  //sample height

$ratio = 4/3;
$newRatio = $x/$y ; //ratio of given sample.

$decision = $y * $ratio ;

//height need to be adjusted
if( $decision < $x ) {

    $width = 240 ;
    $height = 240 / $newRatio ;
}
//width must be adjusted
else if( $decision > $x ) {

    $width = 180 * $newRatio;
    $height = 180  ;
}
//already in proportion
else {
    $width = 240 ;
    $height = 180 ;
}

$dst_w = floor($width) ;
$dst_h = floor($height) ;

//give half of the total margin to left and top.
$dst_x = floor( (240 - $dst_w) / 2 ) ;
$dst_y = floor( (180 - $dst_h) / 2 ) ;

echo "Width & Height:" . $dst_w . ' x ' . $dst_h ;
echo "<br/>";
echo "Dst X & Y :" .$dst_x . ' x ' . $dst_y ;