Reputation: 201
I have a function that generates text that fits the lower part of a circle. Because I do not know any other way that I can make the function fit the upper part of the circle so that it faces me, I want to rotate the image, write on it, rotate it back and again write on it. How can I do that without changing the name of the image?
I have tried something like this :
<?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").">";
?>
But it doesn't work. It doesn't rotate the image.
Can you please help me?
Thanx !
Upvotes: 4
Views: 14090
Reputation: 5690
You can do it easily using php rotate function. Here is simple code
<?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);
?>
Upvotes: 2
Reputation: 95101
Not sure why you need to rotate twice .. but this is what your code should look like
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);
Upvotes: 3
Reputation: 5410
Why dont you just take the normal image and add some css to it
CSS
.yourImage {
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
HTML
<img class="yourImage" src="originalImage.jpg">
Upvotes: 4