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 に答える