GD的imageflip()不起作用 - 代码就停止了

时间:2013-09-01 09:12:56

标签: php image codeigniter gd

我正在尝试使用php gd function imageflip()翻转图像。我安装了GD。我在Windows上使用WAMP和codeigniter。 (并且在wamp上实现imagemagick很难 - 所以我不愿意)。 imageflip()应该像我看到的那样工作。我使用的是PHP版本5.4.16。

也许我错过了什么......

来自phpinfo()

GD

GD Support          enabled
GD Version          bundled (2.1.0 compatible)
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.4.10
GIF Read Support    enabled
GIF Create Support  enabled
JPEG Support        enabled
libJPEG Version     8
PNG Support         enabled
libPNG Version      1.2.50
WBMP Support        enabled
XPM Support         enabled 
libXpm Version      30411
XBM Support         enabled

Directive               Local Value     Master Value
gd.jpeg_ignore_ warning     0               0

我有这段代码:

foreach($products_settings as &$ps) {                
    $filename = $_SERVER['DOCUMENT_ROOT'] . $ps['product_file'];                
    $source_image = imagecreatefromjpeg($filename);  

    //Put source image-resource into array
    $ps['source_image'] = $source_image;
}

并且有效..

当我使用imagerotate() 工作时......

foreach($products_settings as &$ps) {                
    $filename = $_SERVER['DOCUMENT_ROOT'] . $ps['product_file'];                
    $source_image = imagecreatefromjpeg($filename);  

    //rotate image
    $angle = $ps['product_angle'];
    if (intval($angle) <> 0) {
        $source_image = imagerotate($source_image, 360-$angle, imageColorAllocateAlpha($source_image, 255, 255, 255, 127));
    }

    //Put source image-resource into array
    $ps['source_image'] = $source_image;
}

...但是当我使用imageflip(http://php.net/manual/en/function.imageflip.php)时

foreach($products_settings as &$ps) {                
    $filename = $_SERVER['DOCUMENT_ROOT'] . $ps['product_file'];                
    $source_image = imagecreatefromjpeg($filename);  
    imageflip($source_image, IMG_FLIP_BOTH);   //code execution stops here

    //Put source image-resource into array
    $ps['source_image'] = $source_image;
}  

然后imageflip()使代码停止(如果我在不记录之后添加了该行的日志消息)。我想不通为什么?这是什么原因?我在codeigniter / php / apache中的错误日志中看不到任何内容。手册说该函数在失败时将返回false,但我知道图像是正确的,因为我正在使用其他gd函数用于与其他gd函数相同的图像(如imagerotateimageColorAllocateAlpha等)

我也试过这个:

try {
    imageflip($source_image, IMG_FLIP_BOTH); 
}
catch (Exception $e) {
    log_message('DEBUG', 'img err' . $e->__toString());
}

但是没有记录......

如何调试?

1 个答案:

答案 0 :(得分:1)

没有imageflip function in PHP版本5.4.16。安装PHP 5.5,你可以使用该功能。

如果您无法安装PHP 5.5并且需要使用GD翻转图像,您还可以使用一些适用于旧版PHP的代码,我为您搜索了一下:

我并不完全符合一些小问题的代码,但它实际上表明了如何做到这一点。