我正在尝试使用PHP代码中的Imagick旋转箭头。目前我正在使用rotateImage()
。我试图获得基本方向的“基本”角度 - 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
);
答案 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似乎是使“图像页面”中包含有关新几何图形的信息的功能之一。您几乎肯定想要在调用受几何体影响的任何其他函数(例如裁剪)之前重置图像页面。