PHP GD - 如何修改我的缩略图创建器以从中心裁剪肖像图像?

标签 php image gd crop

这是我当前的代码:

$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/

相关文章:

php - 如何使用正则表达式输出两个分隔符之间的字符串中的第二个值?

php - 在 map 上显示 GPS 位置数据

javascript - 图像调整大小 NaN 错误

image - 如何检测鼠标何时不再位于控件中?

php - 为什么我在 GD 饼图中看到这条奇怪的线?

php - 如何从浏览器级别停止正在运行的 php 进程

PHP CURL - session 已过期

Java 在列表中拖放图像

php - 使用 codeigniter 裁剪图像

PHP GD调整透明图像大小给黑色边框