一些转换,包括 Imagick ::rotateImage(),可能会更改“图像页面”——您在其中工作的图像内部工作区域。
在之后的修改中要小心,因为图像页面可能与图像的新尺寸不同。
例如,如果您在旋转后执行 Imagic::cropImage(),您需要正确设置图像页面,否则您的裁剪将根据错误的坐标执行(根据旋转角度,结果图像大小可能会有所不同)。
<?php
$Image = new Imagick($sourceImagePath);
$transparent = '#00000000';
$Image->rotateImage(new \ImagickPixel(), 45); // 这使得结果图像更大
// 将页面设置为新图像的完整大小,从左上角开始 (0, 0)
$Image->setImagePage($Image->getImageWidth(), $Image->getImageHeight(), 0, 0);
$Image->cropImage($crop_w, $crop_h, $crop_x, $crop_y);
?>