PHP Conference Japan 2024

Imagick::rotateImage

(PECL imagick 2, PECL imagick 3)

Imagick::rotateImage旋转图像

描述

public Imagick::rotateImage(混合 $background, 浮点数 $degrees): 布尔值

将图像旋转指定的度数。旋转图像后留下的空三角形将用背景色填充。

参数

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();
}

?>

添加注释

用户贡献的注释 4 条注释

gleb dot deykalo at gmail dot com
8 年前
包括 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);
?>
匿名用户
8 年前
imagick 和 gd 的度数不同!
GD > 旋转 90 度表示逆时针方向。
Imagick > 旋转 90 度表示顺时针方向。

GD 90 = Imagick 270 或 Imagick 90 = GD 270。

使用此函数。

<?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>';
?>

测试结果
1 = 359
90 = 270
270 = 90
359 = 1
360 = 0
AlexG
12 年前
透明

<?php $im->rotateImage(new ImagickPixel('#00000000'), 75); ?>
wjsams at gmail dot com
16 年前
如果你想将图像旋转一定的角度,你可以这样做

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