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

?>

添加笔记

用户贡献的笔记 5 个笔记

5
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);
?>
4
匿名
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
2
AlexG
11 年前
透明

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

<?php
header
('content-type: image/jpeg');
$imagick = new Imagick();
$imagick->readImage('castle.jpg');
$imagick->rotateImage(new ImagickPixel(), 90);
print
$imagick->getImage();
?>
-10
Baptiste VALTHIER
13 年前
您可以使用以下命令将 jpg 图像旋转 -13.55° 为透明 png 图像

<?php
$imagick
= new Imagick();
$imagick->readImage('my.jpg');
$imagick->rotateImage(new ImagickPixel('none'), -13.55);
$imagick->writeImage('my_rotated.png');
$imagick->clear();
$imagick->destroy();
?>
To Top