Php 使非方形图像在不拉伸的情况下渲染为方形图像

Php 使非方形图像在不拉伸的情况下渲染为方形图像,php,laravel,laravel-5,imagick,Php,Laravel,Laravel 5,Imagick,我有一个使用Imagick的PHP函数。我试图从一个URL中提取一个非正方形的图像,并将其大小调整到500x500px,这样它就不会拉伸,但适合这个区域。此外,我使用的是Laravel框架,该函数位于通过route渲染的控制器中 function myFunction() { function createGrid() { $placeholder = "https://placeholdit.imgix.net/~text?txtsize=33&txt=&w=500&a

我有一个使用Imagick的PHP函数。我试图从一个URL中提取一个非正方形的图像,并将其大小调整到500x500px,这样它就不会拉伸,但适合这个区域。此外,我使用的是Laravel框架,该函数位于通过route渲染的控制器中

function myFunction()
{
function createGrid()
{
    $placeholder = "https://placeholdit.imgix.net/~text?txtsize=33&txt=&w=500&h=500";
    $im = new imagick("http://www.masters.com/images/pics/large/h_2015041243595.jpg");
    $image = $im->resizeImage(500, 500, 0, 0, true);
    // $target = new Imagick($placeholder);
    // $target->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
    // $target->compositeImage($image, imagick::COMPOSITE_COPY, 0, 0);
    header("Content-Type: image/png");
    echo $image->getImageBlob();
}
}
我得到一个it渲染为:

如果$Image被定义为:

$im->resizeImage(500, 500, 0, 0, true);

我做错了什么?如何修复它?

另一种选择是裁剪图像

对于Imagick此功能:

图像:提取图像的一个区域

步骤:

  • 调整大小以设置格式,使宽度和高度最小为500px
  • 大小为500px的作物

考虑使用
干预/image
(它具有很好的Laravel集成)和。我会看一看,但实际上我更希望它适合于白色空间。为此,和用于将调整大小的图像添加到白色画布中。我希望它可以显示整个图像,但适合白色背景。