php – 调整大小图像,不失真保持宽高比,然后使用WideImage裁剪多余

前端之家收集整理的这篇文章主要介绍了php – 调整大小图像,不失真保持宽高比,然后使用WideImage裁剪多余前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个网站上有一个我正在工作的区域,将显示一个从外部来源拉出的用户个人资料图像(因此无法控制其原始大小).

我想要做的是拍摄一张图像(在这个例子中为1000像素×800像素,并将其调整到200像素x 150像素).显然这与宽高比有所不同.

我想要做的是调整原始图像的大小,而不会失真,这在这种情况下会产生一个200px x 160px的图像.然后我想要做的是从边缘裁剪多余的图像,以产生正确的图像大小.所以在这种情况下,裁剪5px从顶部和底部的图像终于产生一个200px x 150px.

我现在有WideImage图书馆,并希望使用.我在SO上看到过几个类似的问题,但是没有什么可以说,我正在试图实现.

你可以尝试:
$img->resize(200,150,'outside')->crop('center','middle',200,150);

一些用户发布他们的计算版本…这里也是我的版本:

$sourceWidth = 1000;
$sourceHeight = 250;

$targetWidth = 200;
$targetHeight = 150;

$sourceRatio = $sourceWidth / $sourceHeight;
$targetRatio = $targetWidth / $targetHeight;

if ( $sourceRatio < $targetRatio ) {
    $scale = $sourceWidth / $targetWidth;
} else {
    $scale = $sourceHeight / $targetHeight;
}

$resizeWidth = (int)($sourceWidth / $scale);
$resizeHeight = (int)($sourceHeight / $scale);

$cropLeft = (int)(($resizeWidth - $targetWidth) / 2);
$cropTop = (int)(($resizeHeight - $targetHeight) / 2);

var_dump($resizeWidth,$resizeHeight,$cropLeft,$cropTop);

猜你在找的PHP相关文章