2012-11-07 56 views
1

我看了几个其他类似的问题,但不幸的是他们都没有帮助解决我遇到的问题。Xampp imagecreatefrompng()产生破碎的图像

这是脚本。

<?php 
    // returns a PNG graph from the $_GET['per'] variable 
    $per = imagecreate(302,7); 
    $background = imagecolorallocate($per, 0xFF, 0xFF, 0xFF); 
    $foreground = imagecolorallocate($per, 0x00, 0x8A, 0x01); 
    $border = imagecolorallocate($per, 0x99, 0x99, 0x99); 
    if ($_GET['per'] > 0) 
    { 
     $grad = imagecreatefrompng("images/grad.png"); 
     $per2 = imagecopy($per, $grad, 1, 1, 0, 0, ($_GET['per'] * 3), 5); 
     imagerectangle($per, 0, 0, 301, 6, $border); 
    } 

    header("Content-type: image/png"); 
    imagepng($per,NULL,5); 
?> 

我检查了GD支持,所以我不确定是什么问题。如果我只是建立一个简单的酒吧,而不使用图像,它会正常工作,但是当我尝试用图像构建时,它只显示一张破碎图像的图片。

+0

error_log中显示任何PHP错误? – drew010

+0

不,我有错误报告设置给所有人,我也没有得到任何通知。 – kira423

+0

您是否通过检查$ per2是否正确来验证imagecopy是否正在运行? – ernie

回答

1

你需要确保per存在,否则将抛出一个不确定的指数错误

if ($_GET['per'] > 0) 

应该是这个

if (isset($_GET['per']) && $_GET['per'] > 0) 

,或者如果你想确保它不是空的,存在,你可以做

if (!empty($_GET['per']) && $_GET['per'] > 0) 

因为empty()函数还检查变量是否存在,然后检查它是否为空。

+0

OP的注释表明它不是未定义的索引错误,因为日志中没有任何内容。 。 。 – ernie

+0

我明白,但只是因为日志是空的并不意味着没有错误发生。我拿走了他的消息来源并运行它,那是我得到的唯一错误。一旦解决了问题,他的脚本对我来说工作得很好。即使他没有得到这个错误,最好的做法是在尝试使用它之前检查你的变量&index是否存在。 – Sheac

+0

即使使用它,它仍然不起作用,如果它不是代码错误,它必须与Xampp – kira423