PHP中的imageflip()未定义

时间:2013-04-04 12:38:30

标签: php image image-rotation php-ini

每当我尝试使用函数imageflip()时,它会显示以下消息

  

致命错误:在第6行的imageflip()中调用未定义的函数D:\xampp\htdocs\temp1\image_flip.php

一旦我调用了imap_open函数,即使我已经安装了imap扩展并配置了所有。但是,它仍然显示相同的消息。

1 个答案:

答案 0 :(得分:3)

imageflip() 仅在PHP 5.5 之后才可用。但是,您仍然可以自己定义它,如here所述(尽管如果您计划升级到PHP 5.5,建议不要实现您的,或者至少更改名称以避免重复问题)。为了stackoverflow,我将在这里粘贴代码:

<?php

/**
 * Flip (mirror) an image left to right.
 *
 * @param image  resource
 * @param x      int
 * @param y      int
 * @param width  int
 * @param height int
 * @return bool
 * @require PHP 3.0.7 (function_exists), GD1
 */
function imageflip(&$image, $x = 0, $y = 0, $width = null, $height = null)
{
    if ($width  < 1) $width  = imagesx($image);
    if ($height < 1) $height = imagesy($image);
    // Truecolor provides better results, if possible.
    if (function_exists('imageistruecolor') && imageistruecolor($image))
    {
        $tmp = imagecreatetruecolor(1, $height);
    }
    else
    {
        $tmp = imagecreate(1, $height);
    }
    $x2 = $x + $width - 1;
    for ($i = (int) floor(($width - 1) / 2); $i >= 0; $i--)
    {
        // Backup right stripe.
        imagecopy($tmp,   $image, 0,        0,  $x2 - $i, $y, 1, $height);
        // Copy left stripe to the right.
        imagecopy($image, $image, $x2 - $i, $y, $x + $i,  $y, 1, $height);
        // Copy backuped right stripe to the left.
        imagecopy($image, $tmp,   $x + $i,  $y, 0,        0,  1, $height);
    }
    imagedestroy($tmp);
    return true;
}

使用它:

<?php

$image = imagecreate(190, 60);
$background = imagecolorallocate($image, 100, 0,   0);
$color      = imagecolorallocate($image, 200, 100, 0);
imagestring($image, 5, 10, 20, "imageflip() example", $color);
imageflip($image);
header("Content-Type: image/jpeg");
imagejpeg($image);

我没有尝试过,而且代码根本不是我的,但有一些技巧你可以根据自己的需要调整它。