我在网上搜索这个,但我找不到我需要的东西。
我有一个图像(服务器内部或外部),我需要使用php水平或垂直翻转图像,并显示如下:
<?
$img = $_GET['img'];
header('Content-type: image/png');
/*
do the flip work
*/
imagepng($img, NULL);
imagedestroy($tmp_img);
?>
我该怎么办? 谢谢大家。
答案 0 :(得分:10)
如果您没有使用ImageMagick,也可以使用imagecopy
系列函数实现此目的。见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;
}
答案 1 :(得分:5)
使用ImageMagick以及flipImage()
和flopImage()
方法,以下示例来自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());
}
?>
得到以下结果:
答案 2 :(得分:2)
对于PHP&gt; = 5.5,您可以使用imageflip GD原生函数。