Php ImageCopy重新采样自动裁剪图像
我使用imagecopyresampled根据一定的宽度和高度创建缩略图。我遇到的问题是他们的身高被压扁了。我想要的是所有缩略图都是140x84,如果它们的纵横比不匹配,那么图像的顶部和底部额外部分将被裁剪到中心 这是我到目前为止所拥有的,任何想法都将不胜感激Php ImageCopy重新采样自动裁剪图像,php,image-resizing,Php,Image Resizing,我使用imagecopyresampled根据一定的宽度和高度创建缩略图。我遇到的问题是他们的身高被压扁了。我想要的是所有缩略图都是140x84,如果它们的纵横比不匹配,那么图像的顶部和底部额外部分将被裁剪到中心 这是我到目前为止所拥有的,任何想法都将不胜感激 // Create Thumbnail $imgsize = getimagesize($targetFile); switch(strtolower(substr($targetFile, -3))){
// Create Thumbnail
$imgsize = getimagesize($targetFile);
switch(strtolower(substr($targetFile, -3))){
case "jpg":
$image = imagecreatefromjpeg($targetFile);
break;
case "png":
$image = imagecreatefrompng($targetFile);
break;
case "gif":
$image = imagecreatefromgif($targetFile);
break;
default:
exit;
break;
}
$width = 140; //New width of image
$height = $imgsize[1]/$imgsize[0]*$width; //This maintains proportions
$x_mid = $width/2; //horizontal middle
$y_mid = $height/2; //vertical middle
$src_w = $imgsize[0];
$src_h = $imgsize[1];
$picture = imagecreatetruecolor($width, $height);
imagealphablending($picture, false);
imagesavealpha($picture, true);
$bool = imagecopyresampled($picture, $image, 0, 0, 0, ($y_mid-(84/2)), $width, $height, $src_w, $src_h);
if($bool){
switch(strtolower(substr($targetFile, -3))){
case "jpg":
header("Content-Type: image/jpeg");
$bool2 = imagejpeg($picture,$file_dir."/thumbs/".$imageName,85);
break;
case "png":
header("Content-Type: image/png");
imagepng($picture,$file_dir."/thumbs/".$imageName);
break;
case "gif":
header("Content-Type: image/gif");
imagegif($picture,$file_dir."/thumbs/".$imageName);
break;
}
}
imagedestroy($picture);
imagedestroy($image);
你需要首先确定是否要根据图像的高度或宽度重新调整图像的大小。您通常会根据原始图像是纵向图像还是横向图像,以及所需图像大小的方向来计算。然后,您需要根据自己的选择以编程方式计算出另一条边
一旦完成,您可以在(0,0)处对原始图像进行简单的重新采样,而挂起的图像数据将被截断。请查看此问题的公认答案:谢谢Mike,Sven在该页面上给出的答案非常有效!