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 решает проблему там.