Изменение ширины и высоты изображения с соотношением сторон

php #image #resize

#php #изображение #изменение размера

Вопрос:

У меня есть этот код для изменения ширины изображения:

 function resize_img($file,$width,$height=null){
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    if($ext=='jpg' || $ext=='jpeg'){
        $img = imagecreatefromjpeg($file);
    } else if($ext=='png'){
        $img = imagecreatefrompng($file);
    }

    $img_w = imagesx($img);
    $img_h = imagesy($img);

    $ratio = $width / $img_w;
    $new_h = $img_h * $ratio;
    $new_h = $height??$new_h;

    $new_img = imagecreatetruecolor($width,$new_h);
    imagecopyresampled($new_img, $img, 0, 0, 0, 0, $width, $new_h, $img_w, $img_h);
    if($ext=='jpg' || $ext=='jpeg'){
        imagejpeg($new_img, $file, 82);
    } else if($ext=='png'){
        imagepng($new_img, $file);
    }
}
 

Я хотел бы добавить возможность изменять ширину вместе с высотой, сохраняя при этом аспект. Теперь разрешение меняется, но не заполняется (оно растягивается) Как я могу это сделать? Возможно ли это?

Комментарии:

1. Что это заполнит это пространство. Аналогично тому, как функция подгонки объектов работает в css

2. Взгляните на этот класс: github.com/jspit-de/Gdimage

3. Это невозможно сделать на чистом php? Например, что-то с этой функцией imagecopyresampled ?

4. Gdimage.php это всего лишь 1 файл без каких-либо дополнительных зависимостей. Если вы не хотите использовать класс, вы можете увидеть, как метод adjust решает проблему там.