旋转图像时保留尺寸

时间:2015-08-19 10:43:41

标签: php imagick

我正在尝试使用PHP代码中的Imagick旋转箭头。目前我正在使用rotateImage()。我试图获得基本方向的“基本”角度 - 22.5°。我的问题显示在那些图像中。旋转的箭头稍微小一些 - 这里看起来不那么多,但当我放入地图时,它可以看到很多,箭头旋转f.e.到WNW(292.5°)真的很小。有没有办法如何旋转图像,它会保持箭头的大小?

Rotated image

Original image

编辑: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
    );

enter image description here

1 个答案:

答案 0 :(得分:1)

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

您可以将背景颜色设置为白色以外的其他颜色以查看此内容,或者访问演示位置: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似乎是使“图像页面”中包含有关新几何图形的信息的功能之一。您几乎肯定想要在调用受几何体影响的任何其他函数(例如裁剪)之前重置图像页面。