包含 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);
?>