我正在尝试缩小用户在上传时上传的图像。
这没问题,但我现在想具体说明尺寸。
我正在寻找一些关于我努力生成的算法的建议,该算法将采用任何形状的图像 - 任何宽度/高度的正方形或矩形并缩小它。
该图像需要缩小到目标框大小(这会发生变化但存储在变量中)..
因此需要缩小图像以使宽度和高度都大于目标保持纵横比的宽度和高度. 但只是......
目标尺寸将用于裁剪图像,因此边缘等周围没有空白区域。
我正在寻找基于不同尺寸图像创建正确调整大小的算法 - 我可以处理裁剪,甚至在大多数情况下调整大小,但它在少数情况下失败,所以我正在伸出援手。
我并不是真的要求 PHP 代码更伪。显然都可以。
谢谢。
当前代码..但是我经历了这么多迭代,这可能不再起作用了..:P
$image = $image_orig->clone();
$wRatio = $imageprops['width'] / $dimensions[0]; // imageprops = original image dimens.
$hRatio = $imageprops['height'] / $dimensions[1]; // $dimensions[0] = new width
$maxRatio = max($wRatio,$hRatio); // $dimensions[1] = new height
var_dump('thumb');
$ratio = ($imageprops['width'] - $dimensions[0]) > ($imageprops['height'] - $dimensions[1]);
$shape = ($imageprops['width'] > $imageprops['height']);
$error = ($imageprops['width'] / $imageprops['height']);
if( $error < 0.95 || $error > 1.05 ) { // its NOT a square
if($shape){ // longer width
$scale = $imageprops['height'] / $dimensions[0];
var_dump('1');
$height = $imageprops['height'] / $scale;
$image->scaleImage(0, $height);
} else {
$scale = $imageprops['width'] / $dimensions[1];
var_dump('2');
$width = $imageprops['width'] / $scale;
$image->scaleImage($width, 0);
}
} elseif($ratio) { // is square
$scale = $imageprops['height'] / $dimensions[1];
$newWidth = $imageprops['width'] / $scale;
$extra = 0;
$height = $dimensions[1]+$extra;
$image->scaleImage(0, $height);
} else {
$scale = $imageprops['width'] / $dimensions[0];
$newHeight = $imageprops['height'] / $scale;
$extra = 0;
$width = $dimensions[0]+$extra;
$image->scaleImage($width, 0);
}
$image_size = $image->getImageGeometry();
$image->cropImage($dimensions[0], $dimensions[1],($image_size['width']-$dimensions[0])/2,($image_size['height']-$dimensions[1])/2);