PHP图像裁剪问题

Hou*_*nar 6 php image crop

我有一种方法可以裁剪图像,但它保持比例,有时给我一个椭圆形的图像.有没有一种方法可以固定宽度和高度,同时不会使图像偏斜或变暗?即,120px x 120px

有关如何修改此方法的任何想法吗?

注意: maxSize设置为120px.另外,我从原始图像传递宽度和高度.

protected function calculateSize($width, $height) {
    if ($width <= $this->maxSize && $height <= $this->maxSize) {
        $ratio = 1;
    } elseif ($width > $height) {
        $ratio = $this->maxSize / $width;
    } else {
        $ratio = $this->maxSize / $height;
    }

    $this->newWidth = round($width * $ratio);
    $this->newHeight = round($height * $ratio);
}
Run Code Online (Sandbox Code Playgroud)

jer*_*ity 1

假设您总是希望返回方形尺寸,并且不能选择升级,那么这样的东西应该可以工作(除非我遗漏了一些东西):

protected function calculateSize($width, $height) {
  if ($height <= $this->maxSize && $width <= $this->maxSize) {
    $new_height = $new_width = min(array($height, $width));
  }
  else {
    if ($height > $width) {
      $variable = 'width';
    }
    else {
      $variable = 'height';
    }
    if ($$variable <= $this->maxSize) {
      $new_height = $new_width = $$variable;
    }
    else {
      $new_height = $new_width = min(array($this->maxSize, $$variable));
    }
  }
  $this->newWidth = $new_width;
  $this->newHeight = $new_height;
}
Run Code Online (Sandbox Code Playgroud)