旋转图像时保持大小

Preserve size while rotating image

我正在尝试在 PHP 代码中使用 Imagick 旋转箭头。目前我正在使用 rotateImage()。我试图获得 "basic" 基本方向的角度 - 22,5°。我的问题显示在这些图像中。旋转的箭头有点小 - 在这里它不那么明显,但是当我放入地图时,它很明显,并且箭头旋转 f.e。到 WNW (292.5°) 真的很小。有什么方法可以旋转图像,使其保持箭头的大小?

编辑:Danack 代码后的图片:

$originalWidth = $this->image->getImageWidth();
    $originalHeight = $this->image->getImageHeight();

    $this->image->rotateimage(new ImagickPixel('#00000000'), $angle);

    $newWidth = $this->image->getImageWidth();
    $newHeight = $this->image->getImageHeight();

    $this->image->cropImage(
        $originalWidth,
        $originalHeight,
        ($newWidth - $originalWidth) / 2,
        ($newHeight - $originalHeight) / 2
    );

问题不是图像缩小了,而是图像变大了,但是你以相同的尺寸显示它,这使得箭头部分看起来更小了。

您可以将背景颜色设置为白色以外的其他颜色来查看此内容,或者访问演示:http://phpimagick.com/Imagick/rotateImage

您需要做的是在旋转后将图像裁剪回原始大小。

$imagick = new \Imagick(realpath($imagePath));
$originalWidth = $imagick->getImageWidth();
$originalHeight = $imagick->getImageHeight();

$imagick->rotateImage($color, $angle);


    $imagick->setImagePage(
        $imagick->getimageWidth(),
        $imagick->getimageheight(),
        0,
        0
    );

    $imagick->cropImage(
        $originalWidth,
        $originalHeight,
        ($imagick->getimageWidth() - $originalWidth) / 2,
        ($imagick->getimageHeight() - $originalHeight) / 2
    );


header("Content-Type: image/jpg");
echo $imagick->getImageBlob();

此外,Imagick::rotateImage 似乎是使 'image page' 保留有关新几何体信息的函数之一。您几乎肯定希望在调用任何其他受几何影响(例如裁剪)的功能之前重置图像页面。