I search the web for this and i can't find what i need.
I have an image (in or outside server) and i need to flip the image horizontaly or vertically with php, and show it like this:
<?
$img = $_GET['img'];
header('Content-type: image/png');
/*
do the flip work
*/
imagepng($img, NULL);
imagedestroy($tmp_img);
?>
How can i do it? Thank you all.
You can also achieve this with the imagecopy
family of functions if you don't happen to have ImageMagick available. See this example:
function ImageFlip ( $imgsrc, $mode )
{
$width = imagesx ( $imgsrc );
$height = imagesy ( $imgsrc );
$src_x = 0;
$src_y = 0;
$src_width = $width;
$src_height = $height;
switch ( $mode )
{
case '1': //vertical
$src_y = $height -1;
$src_height = -$height;
break;
case '2': //horizontal
$src_x = $width -1;
$src_width = -$width;
break;
case '3': //both
$src_x = $width -1;
$src_y = $height -1;
$src_width = -$width;
$src_height = -$height;
break;
default:
return $imgsrc;
}
$imgdest = imagecreatetruecolor ( $width, $height );
if ( imagecopyresampled ( $imgdest, $imgsrc, 0, 0, $src_x, $src_y , $width, $height, $src_width, $src_height ) )
{
return $imgdest;
}
return $imgsrc;
}
$img = $_GET['img'];
... you need to load the image into a proper image handle. Possibly imagecreatefrompng
if you have a filename. Otherwise if you are trying to upload a file, look into the PHP file upload handling documentation - Jon Grant 2012-04-03 22:06
Using ImageMagick and the flipImage()
and flopImage()
methods, the following example is from devzone.zend.com:
<?php
try {
// initialize object
$image = new Gmagick();
// read image file
$image->readImage('gallery/original.jpg');
// flip image vertically
$image->flipImage();
// write new image file
$image->writeImage('gallery/new_1.jpg');
// revert
$image->flipImage();
// flip image horizontally
$image->flopImage();
// write new image file
$image->writeImage('gallery/new_2.jpg');
// free resource handle
$image->destroy();
} catch (Exception $e) {
die ($e->getMessage());
}
?>
With the following results:
For PHP >= 5.5 you can use the imageflip GD native function.