我正在尝试使用php imagerotate函数旋转图像,但它不起作用。 GD图书馆也在。
我试过这个,
public function rotate()
{
$targ_w = 240;
$targ_h = 180;
$jpeg_quality = 100;
$degrees = 90;
$src = "/photos/sunset.jpg";
$image = imagecreatefromjpeg($src);
$rotatedImage = imagerotate($image,$degrees,0);
imagejpeg( $rotatedImage,$src,$jpeg_quality);
imagedestroy($rotatedImage);
die();
}
答案 0 :(得分:1)
<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 180;
// Content type
header('Content-type: image/jpeg');
// Load
$source = imagecreatefromjpeg($filename);
// Rotate
$rotate = imagerotate($source, $degrees, 0);
// Output
imagejpeg($rotate);
// Free the memory
imagedestroy($source);
imagedestroy($rotate);
?>
答案 1 :(得分:0)
您必须输出旋转的图像(通过$rotatedImage
而不是$image
):
$rotatedImage = imagerotate($image,$degrees,0);
header('Content-type: image/jpeg'); //Header is required to output the image.
imagejpeg($rotatedImage,$name ,$jpeg_quality);
imagedestroy($rotatedImage);
die();
答案 2 :(得分:0)
您正在输出未更改 $image
到文件。你应该输出旋转的那个。
imagejpeg( $rotatedImage,$name ,$jpeg_quality);
第二件事 - 你的形象是空的。它只定义了宽度和高度,但内部没有内容。您定义了一个$src
变量,但根本不使用它
也许你想用这个代替imagecreatetruecolor
:
$src = "/photos/sunset.jpg";
$image = imagecreatefromjpeg($src);
答案 3 :(得分:0)
如果您要显示图像,则需要更改:
header('Content-type: image/jpeg'); //Add jpeg header
imagejpeg( $rotatedImage, NULL, 100); //<-- Notice i remove the $src parameter
如果您想更新您的jpg文件,那么您的代码将起作用,但运行php文件的用户需要具有写入文件的权限。当然,您当前的图像将被覆盖。
正如我在评论中所说,你需要GD版本1.8或更高版本才能使用php.net
来处理jpeg文件