|
Posted by comp.lang.php on 06/23/07 15:36
GOT IT!!!
if (!function_exists('imagerecreatetruecolor')) {
/**
* Recreate an existing image as a true color image {@link
http://us2.php.net/manual/en/function.imagerotate.php#62530 See notes
in imagerotate() for more information}
*
* @access public
* @param resource $image (reference)
* @param boolean $willRotate (default false)
* @param int $angle (default 0)
* @return resource $image
*/
function &imagerecreatetruecolor(&$image, $willRotate = false, $angle
= 0) {
if (!imageistruecolor($image) &&
function_exists('imagecreatetruecolor')) {
if ($willRotate && (($angle > 0 && $angle < 180) || ($angle >
180 && $angle < 360))) {
list($width, $height) = array(@imagesy($image), @imagesx($image));
} else {
list($width, $height) = array(@imagesx($image), @imagesy($image));
}
$tempImage = @imagecreatetruecolor($width, $height);
@imagecopy($tempImage, $image, 0, 0, 0, 0, $width, $height);
$image = $tempImage;
}
return $image;
}
}
// NOTE THAT NEGATIVE NUMBERS GO CLOCKWISE IN imagerotate(), I PREFER
NEGATIVE GO COUNTERCLOCKWISE AND POSITIVE GO CLOCKWISE
if ($this->isSuccessful && $image && isset($angle) &&
is_numeric($angle)) $newImage = $image =
@imagerotate(imagerecreatetruecolor($image, 'willRotate', $angle), -1
* $angle, 0); // ROTATE IMAGE
On Jun 20, 9:45 am, "comp.lang.php" <phillip.s.pow...@gmail.com>
wrote:
> Recap:
>
> Using imagerotate within PHP 4.3.9 - PHP 5.2.0 for both XP and Linux,
> all using GD2
>
> If you rotate an image 180 degrees, all is fine
>
> If you rotate an image > 0 degrees and < 180 degrees, or > 180 degrees
> and < 360 degrees, while the image will rotate, its dimensions are
> somehow not refactored and as a result you get a rather annoying black
> bar in the newly-rotated image, along with part of your image being
> cropped off.
>
> I learned about a possible workaround with ImageMagick's convert
> command, but has anyone found a better solution (other than using XP's
> built-in image rotation routines)?
>
> Thanks
> Phil
Navigation:
[Reply to this message]
|