在我管理的页面中,用户可以上传任意维度的图像,不超过1 MB的空间。我想相对于240x180像素调整图像的大小,但不会破坏图像的纵横比(或者至少它不会大幅扭曲)。我当前的代码只强制更改图像:
$img = imagecreatetruecolor ($width, $height);
imagecopyresampled ($img, $original_img, 0,0,0,0, $width, $height, $wimg, $h_img);
我希望生成一个图像(当它是这种情况时)与加载的关系相同,但小于$width
和$height
目标,并且仍然填充黑色margo。
“就像我有黑色背景并将图像置于”
中心答案 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 ;