/** * Returns rotated image * * @param WideImage_Image $image * @param numeric $angle * @param int $bgColor * @param bool $ignoreTransparent * @return WideImage_Image */ function execute($image, $angle, $bgColor, $ignoreTransparent) { $angle = -floatval($angle); if ($angle < 0) { $angle = 360 + $angle; } $angle = $angle % 360; if ($angle == 0) { return $image->copy(); } if ($bgColor === null) { if ($image->isTransparent()) { $bgColor = $image->getTransparentColor(); } else { $tc = array('red' => 255, 'green' => 255, 'blue' => 255, 'alpha' => 127); if ($image->isTrueColor()) { $bgColor = $image->getExactColorAlpha($tc); if ($bgColor == -1) { $bgColor = $image->allocateColorAlpha($tc); } } else { $bgColor = $image->getExactColor($tc); if ($bgColor == -1) { $bgColor = $image->allocateColor($tc); } } } } return new WideImage_TrueColorImage(imagerotate($image->getHandle(), $angle, $bgColor, $ignoreTransparent)); }