如何使用 imagick 仅在顶部和底部扭曲弧形图像?

How do I distort arc image on only top and bottom sides using imagick?

我希望它是这样的:

但我得到这个:

<?php
$image = new imagick( $_SERVER['DOCUMENT_ROOT']."/test/op.jpg" );
$points = array(
    90,
);
$image->setimagebackgroundcolor("#fad888");
$image->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$image->distortImage(\Imagick::DISTORTION_CYLINDER2PLANE, $points, true);
header("Content-Type: image/jpeg");
echo $image;

您想使用 wave filter,而不是失真过滤器。

<?php
$image = new Imagick("googlelogo_color_272x92dp.png");
$image->setImageBackgroundColor("#fad888");
$image->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$image->waveImage($image->getImageHeight() / -2, $image->getImageWidth() * 2);
header("Content-Type: image/jpg");
echo $image->getImageBlob();

您需要 trim 删除图像底部额外添加的 space。输出: