Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP图像调整最小宽度高度_Php_Image Resizing - Fatal编程技术网

PHP图像调整最小宽度高度

PHP图像调整最小宽度高度,php,image-resizing,Php,Image Resizing,有人能帮我解个方程式吗。我想向下调整图像的大小,使其最小宽度或高度为200px。所以,如果原稿是500x300,那么结果是333x200,如果原稿是500x900,那么结果是200x360,依此类推。如果任一原始尺寸小于200px,则不进行大小调整 我非常感谢您对此的任何意见。我确信这很简单,我似乎无法计算出来。你只需要计算出现有的图像比率,然后从中进行计算。比率是图像宽度与高度之比,反之亦然,通常较长的图像除以较短的图像,得到的比率>=1。例如,宽度450和高度300的宽度比为1.5。这意味着

有人能帮我解个方程式吗。我想向下调整图像的大小,使其最小宽度或高度为200px。所以,如果原稿是500x300,那么结果是333x200,如果原稿是500x900,那么结果是200x360,依此类推。如果任一原始尺寸小于200px,则不进行大小调整


我非常感谢您对此的任何意见。我确信这很简单,我似乎无法计算出来。

你只需要计算出现有的图像比率,然后从中进行计算。比率是图像宽度与高度之比,反之亦然,通常较长的图像除以较短的图像,得到的比率>=1。例如,宽度450和高度300的宽度比为1.5。这意味着图像的宽度是其高度的1.5倍。然后,你可以将你的最小值乘以比率,得到另一个尺寸,或者如示例中所示,如果你的身高是200,那么另一侧将是最小*比率或200*1.5,这使得尺寸为300宽200高

$height = 500;
$width = 300;
$min = 200;
if($width > $height){
    $ratio = $width/$height;
    $height = $min;
    $width = round($min * $ratio);
} else  {
    $ratio = $height/$width;
    $width = $min;
    $height = round($min * $ratio);
}

echo "Width: $width<br>";
echo "Height: $height<br>";

另外,您希望有最小的一面,以适应200像素,但不要高档。我会这样做

if ($width > 200 || $height > 200) {
     if ($width > $height) {
          $ratio = (200 / $height);
     } else {
          $ratio = (200 / $width);
     }

     $resizedWidth = $ratio * $width;
     $resizedHeight = $ratio * $height;
}

不是完整的代码,只是一个起点,希望这对您有所帮助

如果您的服务器安装了php imagick扩展,您可以使用函数cropThumbnailImage

我把答案改短了一点,你们只计算一次比率:

// Set image dimensions for testing
$imgWidth = 100;
$imgHeight = 250;

// Minimal dimension requirements 
$minDim = 300;

if ($imgWidth < $minDim || $imgHeight < $minDim) {
    $ratio = $imgWidth / $imgHeight;
    if( $ratio > 1) {   // Width is greater
        $imgHeight = $minDim;
        $imgWidth = round($minDim * $ratio);
    }
    else {  // Height is greater
        $imgWidth = $minDim;
        $imgHeight = round($minDim / $ratio);
    }
}

echo "Width: $imgWidth<br>";
echo "Height: $imgHeight<br>";

到目前为止你试过什么?到目前为止,您能否向我们展示您的代码,并让我们知道哪些代码不起作用,或者哪些代码无法理解?