从纵向到景观的PHP图像

时间:2017-06-08 13:45:35

标签: php landscape portrait

我使用ImageResize php库来调整大小和裁剪图像。

但是现在,我遇到了一个我无法找到解决方案的问题,而是将图像从纵向转换为横向。

当然,我可以让它变形图像,但我希望实现这样的目标:

Example

所以,关键是如何将肖像图像放在风景背景中,以免变形。

有什么想法吗?

干杯。

1 个答案:

答案 0 :(得分:0)

手动,您可以像这样在Plain 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);
        }
    }