Imagick::rotateImage
(PECL imagick 2, PECL imagick 3)
Imagick::rotateImage — 画像を回転する
説明
指定した角度だけ画像を回転させます。回転によって生じる空き領域は、 背景色で埋められます。
パラメータ
background
-
背景色。
degrees
-
画像を回転させる度数。時計回りに数えます。
戻り値
成功した場合に true
を返します。
変更履歴
バージョン | 説明 |
---|---|
PECL imagick 2.1.0 | 色を表す文字列を最初のパラメータとして指定できるようになりました。 これまでのバージョンでは ImagickPixel オブジェクトしか指定できませんでした。 |
例
例1 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();
}
?>
+add a note
User Contributed Notes 4 notes
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);
?>
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
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();
?>