0

我希望在 WideImage 库的帮助下将图像调整为预定义的最大尺寸,以保持纵横比。

例子:

最大允许尺寸:200x200

输入图像尺寸:300x200 徽标(1,5:1 纵横比),

当前输出图像尺寸:200x200

预期输出图像尺寸:200x133(1,5:1 纵横比)。

目前,图像会随着纵横比的改变而失真。应该做些什么来保持该纵横比?

我正在使用下面的代码。

$targetWidth = 200;
$targetHeight = 200;

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

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

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


$img->resize($resizeWidth, $resizeHeight)

PS:我从 Resize image 中得到了上述逻辑,没有失真保持纵横比,然后使用 WideImage 裁剪多余的

4

1 回答 1

1

这个简单的逻辑对我有帮助。

$targetWidth = 200;
$targetHeight = 200;

$ratio = $srcWidth / $srcHeight;

if ($ratio > 1) {
    $resizeWidth = $targetWidth;
    $resizeHeight= $targetHeight / $ratio;
} else {
    $resizeWidth = $targetWidth * $ratio;
    $resizeHeight= $targetHeight;
}

$img->resize($resizeWidth, $resizeHeight)
于 2013-10-24T17:55:58.143 回答