PHP изображение от портрета до пейзажа

Я использую библиотеку ImageResize php для изменения размера и обрезки изображений.

Но сейчас я сталкиваюсь с проблемой, которую не могу найти, и она заключается в преобразовании изображения из портрета в ландшафт.

Конечно, я могу сделать это, искажая изображение, но я хочу добиться чего-то вроде этого:

пример

Итак, дело в том, как поместить портретное изображение на фоне пейзажа, чтобы не деформировать его.

Любая идея?

Приветствия.

1

Решение

Вручную, вы можете изменить размер в обычном PHP следующим образом:

//define image path
$filename="image.jpg";

// Load the image
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

//and save it on your server...
file_put_contents("myNEWimage.jpg",$rotate);

У меня есть класс изображений на Github (без поворота, заметьте), и у него есть изменение размера и обрезка. Логика здесь в основном сохраняет правильное соотношение сторон и обрезает перекрывающиеся элементы. Вы можете сделать нечто подобное после поворота:

https://github.com/delboy1978uk/image/blob/master/src/Image.php#L163-L180

public function resizeAndCrop($width,$height)
{
$target_ratio = $width / $height;
$actual_ratio = $this->getWidth() / $this->getHeight();
if($target_ratio == $actual_ratio){
// Scale to size
$this->resize($width,$height);
} elseif($target_ratio > $actual_ratio) {
// Resize to width, crop extra height
$this->resizeToWidth($width);
$this->crop($width,$height,true);
} else {
// Resize to height, crop additional width
$this->resizeToHeight($height);
$this->crop($width,$height,true);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]