如何在PHP中旋转图像?

时间:2012-11-10 20:22:35

标签: php image rotation

我有一个函数可以生成适合圆的下半部分的文本。因为我不知道任何其他方法可以使函数适合圆的上半部分以便它面向我,我想旋转图像,在上面写,旋转它然后再在它上面写。如何在不更改图像名称的情况下执行此操作?

我尝试过这样的事情:

<?php
function  create_image()
{

$im = @imagecreate(140, 140)or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);

imageellipse ( $im , $cx , $cy , $size*2 , $size*2 , $black );

write($im,$cx,$cy,$size,$s,$e,$black,$text1,$font,$size,$pad);
imagerotate($im, 180,0);
write($im,$cx,$cy,$size,$s,$e,$black,$text2,$font,$size,$pad);
imagerotate($im, 180,0);

imagepng($im,"image.png");
imagedestroy($im);  

}
?>

<?php
create_image();
print "<img src=image.png?".date("U").">";
?>

但它不起作用。它不会旋转图像。

你能帮帮我吗?

Thanx!

3 个答案:

答案 0 :(得分:4)

为什么不采取正常的图像并添加一些CSS

<强> CSS

.yourImage {
 -webkit-transform: rotate(-90deg);
 -moz-transform: rotate(-90deg);
 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}

<强> HTML

<img class="yourImage" src="originalImage.jpg">

答案 1 :(得分:3)

不确定为什么需要旋转两次..但这就是你的代码应该是什么样的

function create_image($img) {
    $im = @imagecreatefrompng($img) or die("Cannot Initialize new GD image stream");
    $rotate = imagerotate($im, 180, 0);
    imagepng($rotate);
    imagedestroy($rotate);
    imagedestroy($im);
}

header('Content-Type: image/png');
$image = "a.png";
create_image($image);

答案 2 :(得分:2)

你可以使用php旋转功能轻松完成。这是简单的代码

<?php 
 $image = 'test.jpg';

// The file you are rotating

//How many degrees you wish to rotate
 $degrees = 180;

// This sets the image type to .jpg but can be changed to png or gif
 header('Content-type: image/jpeg') ;

// Create the canvas
   $src = $image;
$system = explode(".", $src);

if (preg_match("/jpg|jpeg/", $system[1]))
{
    $src_img=imagecreatefromjpeg($src);
}
if (preg_match("/png/", $system[1]))
{
    $src_img = imagecreatefrompng($src);
}
if (preg_match("/gif/", $system[1]))
{
    $src_img = imagecreatefromgif($src);
}

  // Rotates the image
  $rotate = imagerotate($src_img, $degrees, 0) ;

  // Outputs a jpg image, you could change this to gif or png if needed
  if (preg_match("/png/", $system[1]))
{
    imagepng($rotate,$image); 
} 
else if (preg_match("/gif/", $system[1]))
{
    imagegif($rotate, $image);
}
else
{
    imagejpeg($rotate, $image); 
}

imagedestroy($rotate);  
imagedestroy($src_img);

   ?>