我有代码可以使原始图像表单用户赞叹不已。我需要拇指的硬核宽度和高度为160 x160。我的问题不是完美的图片。我的意思是,当用户要添加的img宽度大于高度时,我的缩略图看起来不好并且被拉伸了;而当原始img的宽度大于宽度时,发生了相似性,则拇指被严重压缩。我以为我必须使用函数imagecopyresampled()进行操作,但是我认为这是一个糟糕的选择。我的问题是:怎么做才能使拇指不被压缩或拉伸并切开手指?从原始图像的中心? 我的代码现在看起来像这样:
$imgOrginalsize = getimagesize($file);
$ratio = $imgOrginalsize[0] / $imgOrginalsize[1];
$h = 160;
$w = 160;
$file_name = basename($file);
switch (strtolower($imgOrginalsize['mime'])) {
case 'image/jpeg':
$img = imagecreatefromjpeg($file);
$new = imagecreatetruecolor($w, $h);
imagecopyresampled($new, $img, 0, 0, 0, 0, $w, $h, $imgOrginalsize[0], $imgOrginalsize[1]);
imagejpeg($new, $pathToSave . $file_name, 100);
imagedestroy($new);
break;
case 'image/png':
$img = imagecreatefrompng($file);
$new = imagecreatetruecolor($w, $h);
imagecopyresampled($new, $img, 0, 0, 0, 0, $w, $h, $imgOrginalsize[0], $imgOrginalsize[1]);
imagepng($new, $pathToSave . $file_name, 100);
imagedestroy($new);
break;
default:
var_dump('error default');
exit();
}
现在拇指看起来很糟糕,例如被压缩了-原始img更高了,oyu知道我的意思是我不需要所有图片的缩略图-我可以从左上角(或从原始img的中心)裁剪出来,但是我不想压缩或拉伸它:
答案 0 :(得分:1)
尝试imagecrop($ img,['x'=> 0,'y'=> 0,'width'=> $ size,'height'=> $ size]);
将$ size替换为所需的宽度/高度
该链接还提供了一个如何居中的示例。