0

基本上,如果我有一个 3400x3400 的图像并且我的目标尺寸是 340x200,那么我想从原始图像的中间抓取相应的 3400x2000,然后将其缩小到 340x200,我对它的外观有一个粗略的了解,这里是到目前为止我所拥有的:

$RealWidth=164;
$RealHeight=126;
$org_img = imagecreatefromjpeg($newname);    
list($width, $height) = getimagesize($newname);
$ratio2 = $height/$width;
$ratio = $RealHeight/$RealWidth;
$img = imagecreatetruecolor($RealWidth,$RealHeight);
$ims = getimagesize($newname);
imagecopyresized($img,$org_img, 0, 0, 0, 0, $RealWidth, $RealHeight, $height*$ratio2, $height);
imagejpeg($img,$newname,90);
imagedestroy($img);

我对数学有点困惑,如果需要,我也希望它能够从顶部/底部裁剪一个区域。

4

1 回答 1

0

您的代码中插入了“新”数学:

$RealWidth=164;
$RealHeight=126;
$org_img = imagecreatefromjpeg($newname);
list($width, $height) = getimagesize($newname);
$ratio = $width / $height < $RealWidth / $RealHeight ? $RealWidth / $width : $RealHeight / $height;
$src_x = round($width  / 2 - ($RealWidth  / 2) / $ratio);
$src_y = round($height / 2 - ($RealHeight / 2) / $ratio);
$src_w = round($RealWidth  / $ratio);
$src_h = round($RealHeight / $ratio);
$img = imagecreatetruecolor($RealWidth,$RealHeight);
$ims = getimagesize($newname);
imagecopyresized($img, $org_img, 0, 0, $src_x, $src_y, $RealWidth, $RealHeight, $src_w, $src_h);
imagejpeg($img,$newname,90);
imagedestroy($img);
于 2013-08-25T01:53:40.170 回答