这是我当前的代码:
$image = 'img.jpg';
$source = imagecreatefromjpeg($image);
list($origWidth, $origHeight) = getimagesize($image);
$imgH = 75;
$imgW = $origWidth / $origHeight * $imgH;
$thumb = imagecreatetruecolor($imgW, $imgH);
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $imgW, $imgH, $origWidth, $origHeight);
这允许我输出固定高度为 75 像素的图像。我想做的是拥有 99x75
像素的恒定图像大小。不适合此的肖像图像将从中心裁剪(因此原件的中心仍然是缩略图的中心 - 如果这有意义的话)。
我该怎么做?
最佳答案
嗯,这是纯粹的数学。您想要获得 99x75 的尺寸,并且只想从宽度上进行切割。因此,首先,调整大小以适应高度。这就是您所做的,但它是为了适合 75 的高度。将其切换到 99。然后检查宽度是否 <= 75。如果不是,则执行以下操作:
if( $imgW > 75 )
{
$diff = $imgw - 75; // this is what's extra
$srcX = ceil( $diff / 2 ); // this is where your img starts from
$imgW = 75;
}
imagecopyresampled($thumb, $source, 0, 0, $srcX, 0, $imgW, $imgH, $origWidth, $origHeight); // notice that src X changed accordingly.
因此,如果第一次“调整大小”后的宽度为 100 而您想要 75,则计算 diff = 25,将其除以 2 并将其 ceil => 13,然后告诉 GD 函数开始复制图像从 13 开始,而不是 0,并且仍然保持 75 高度。这意味着它将从宽度 13 复制到宽度 88 => 中心。
希望这是您想要的。 问候, 加布里埃尔
关于PHP GD - 如何修改我的缩略图创建器以从中心裁剪肖像图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2879526/