PHP Conference Nagoya 2025

Imagick::rotateImage

(PECL imagick 2, PECL imagick 3)

Imagick::rotateImageRotaciona uma imagem

Descrição

public Imagick::rotateImage(mixed $background, float $degrees): bool

Rotaciona uma imagem no número especificado de graus. Os triângulos vazios que sobrarem da rotação da imagem são preenchidos com a cor de fundo.

Parâmetros

background

A cor de fundo

degrees

Ângulo de rotação, em graus. O ângulo de rotação é interpretado como o número de graus para rotacionar a imagem no sentido horário.

Valor Retornado

Retorna true em caso de sucesso.

Registro de Alterações

Versão Descrição
PECL imagick 2.1.0 Agora permite uma string representando a cor como primeiro parâmetro. As versões anteriores permitiam apenas um objeto ImagickPixel.

Exemplos

Exemplo #1 Exemplo de Imagick::rotateImage()

<?php
function rotateImage($imagePath, $angle, $color) {
$imagick = new \Imagick(realpath($imagePath));
$imagick->rotateimage($color, $angle);
header("Content-Type: image/jpg");
echo
$imagick->getImageBlob();
}

?>

adicione uma nota

Notas Enviadas por Usuários (em inglês) 4 notes

up
5
gleb dot deykalo at gmail dot com
8 years ago
Some transformations including Imagick ::rotateImage() may change "image page" -- working area inside the image you work on.

Be careful with future modifications afterwards because the image page would be different from new sizes of the image.

For example, if you do Imagic::cropImage() after rotation, you need to set image page properly, otherwise your crop would be performed relating to wrong coordinates (depending on rotation angle, resulting image size may vary).

<?php
$Image
= new Imagick($sourceImagePath);

$transparent = '#00000000';
$Image->rotateImage(new \ImagickPixel(), 45); // This makes resulting image bigger

// Set page to be of the full size of new image, starting at top left corner (0, 0)
$Image->setImagePage($Image->getImageWidth(), $Image->getImageHeight(), 0, 0);

$Image->cropImage($crop_w, $crop_h, $crop_x, $crop_y);
?>
up
4
Anonymous
8 years ago
The degrees for imagick and gd is difference!
GD > rotate 90 means counter clockwise.
Imagick > rotate 90 means clockwise.

GD 90 = Imagick 270 or Imagick 90 = GD 270.

Use this function.

<?php
function calculateCounterClockwise($value)
{
if (
$value == 0 || $value == 180) {
return
$value;
}
if (
$value < 0 || $value > 360) {
$value = 90;
}

$total_degree = 360;
$output = intval($total_degree-$value);
return
$output;
}
// calculateCounterClockwise

echo '1 = '.calculateCounterClockwise(1).'<br>';
echo
'90 = '.calculateCounterClockwise(90).'<br>';
echo
'270 = '.calculateCounterClockwise(270).'<br>';
echo
'359 = '.calculateCounterClockwise(359).'<br>';
echo
'360 = '.calculateCounterClockwise(360).'<br>';
?>

test results:
1 = 359
90 = 270
270 = 90
359 = 1
360 = 0
up
2
AlexG
12 years ago
Transparent

<?php $im->rotateImage(new ImagickPixel('#00000000'), 75); ?>
up
1
wjsams at gmail dot com
16 years ago
If you want to rotate an image by a certain degree you can do this:

<?php
header
('content-type: image/jpeg');
$imagick = new Imagick();
$imagick->readImage('castle.jpg');
$imagick->rotateImage(new ImagickPixel(), 90);
print
$imagick->getImage();
?>
To Top