使非方形图像呈现为方形图像而不拉伸

时间:2015-12-09 21:54:04

标签: php laravel laravel-5 imagick

我有一个使用Imagick的PHP函数。我试图从URL中拉出一个非方形图像并将其调整到500x500px,它不会拉伸但适合这个区域。另外,我使用的是Laravel框架,此函数位于通过路径呈现的控制器中。

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();
}
}

我得到它呈现为:

enter image description here

当图像定义为:

时,$ Image如何不是想象的实例
$im->resizeImage(500, 500, 0, 0, true);

我做错了什么以及如何解决?

1 个答案:

答案 0 :(得分:0)

替代方案是裁剪图像。

想象一下这个功能:http://php.net/manual/en/imagick.cropimage.php

  

Imagick :: cropImage - 提取图像的一个区域

步骤:

  • 调整大小以使宽度和高度最小化500px
  • 作物大小为500px