我在一个网站上有一个我正在工作的区域,将显示一个从外部来源拉出的用户个人资料图像(因此无法控制其原始大小).
我想要做的是拍摄一张图像(在这个例子中为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);