PHP GD:由于错误,无法显示图像

时间:2012-11-03 23:33:37

标签: php gd

好的..所以我一直试图为我玩的游戏制作'签名'。 唯一的问题是,当我想插入一个阿凡达和阿凡达时,我遇到了很多问题。在线/离线图片。

我一直试图做的两件事是:

  1. 通过检查是否存在habbo_offline.gif,从网页habplus.com/home/[username获取用户状态。

    if(strpos(file_get_contents('http://www.habpl.us/home/'.$username.''), 
              'habbo_offline.gif') == true) {
    
  2. 抓取用户图像并在最终图像上显示

    function habSigFigure($username){
            $omgfig = 'http://www.habpl.us/figure.php?user='.$username.'&img_format=gif';
            return $omgfig; 
    
    //place habbo avatar
        $habsigfig = imagecreatefromgif($omgfig);
        imagecopy($img, $habsigfig, 13, 32, 0, 0, imagesx($habsigfig), imagesy($habsigfig));*/
        //place habbo avatar
    
  3. 我已经包含了整个源代码,并且可以访问该页面here - 另一个与变量included

    的链接

    希望你能帮忙.. 真诚的,Malmoc

    <?php
    include 'config.php';
    $username=$_REQUEST["user"];
    $grabstat3 = fopen("http://habplus.com/fansitetools/userStats.php?user={$username}&stat=motto", "r"); 
    while (!feof($grabstat3)){ $motto1 = fgets($grabstat3);
    }   
    fclose($grabstat3);
    $username=$_REQUEST["user"];
    $grabstat2 = fopen("http://habplus.com/fansitetools/userStats.php?user={$username}&stat=pixels", "r"); 
    while (!feof($grabstat2)){ $pixels1 = fgets($grabstat2);
    }
    fclose($grabstat2);
    $username=$_REQUEST["user"];
    $grabstat1 = fopen("http://habplus.com/fansitetools/userStats.php?user={$username}&stat=credits", "r"); 
    while (!feof($grabstat1)){ $credits1 = fgets($grabstat1);
    }
    fclose($grabstat1);
    
    
    
    $pixels = 'Pixels: '.$pixels1.'';
    $credits = 'Credits: '.$credits1.'';
    $motto = 'Motto: '.$motto1.'';
    /* Get custom img */
    if(empty($_REQUEST['img'])){
        $img = 'default.png';
    }else{ 
        $img =$_REQUEST['img'];
    }
    
    /* TEXT COLORS */
    $red =$_REQUEST['red'];
    $green =$_REQUEST['green'];
    $blue =$_REQUEST['blue'];
    
    /* Font size */
    $fsize =$_REQUEST['fsize'];
    
    
        /*function habSigStatus($username){
            if(strpos(file_get_contents('http://www.habpl.us/home/'.$username.''), 'habbo_offline.gif') == true){
                return false;
            }else{
                return true;
    
    
        function habSigFigure($username){
            $omgfig = 'http://www.habpl.us/figure.php?user='.$username.'&img_format=gif';
            return $omgfig;
        }
        }
    }*/
    
    
    /*
    
        //place habbo avatar
        $habsigfig = imagecreatefromgif($omgfig);
        imagecopy($img, $habsigfig, 13, 32, 0, 0, imagesx($habsigfig), imagesy($habsigfig));*/
        //place habbo avatar
    
    
    
        //habbo status
        if(strpos(file_get_contents('http://www.habpl.us/home/'.$username.''), 'habbo_offline.gif') == true){
            $status_img = imagecreatefromgif('habbo_offline.gif');
        }else{
            $status_img = imagecreatefromgif('habbo_online.gif');
        }
        imagecopy($image, $status_img, 403, 96, 0, 0, 50, 16);
        //habbo status
    
    
    $image = imagecreatefrompng($img); 
    $font_color = imagecolorallocate($image, $red, $green, $blue); 
    imagefttext($image, $fsize, 0, 3, 12, $font_color, './volt.ttf', $credits);  /* top left     */
    imagefttext($image, $fsize, 0, 403, 12, $font_color, './volt.ttf', $pixels); /* top right    */
    imagefttext($image, $fsize, 0, 3, 96, $font_color, './volt.ttf', $motto);    /* bottom left  */
    imagefttext($image, $fsize, 0, 403, 96, $font_color, './volt.ttf', $online); /* bottom right */
    /* imagefttext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text [, array $extrainfo]) */
    header('Content-type: image/png'); 
    imagepng($image); 
    imagedestroy($image); 
    
    
    ?>
    

2 个答案:

答案 0 :(得分:1)

这是你的问题,老实说相当狡猾:

imagecopy($image, $status_img, 403, 96, 0, 0, 50, 16);
$image = imagecreatefrompng($img); 

您需要在之前创建图像,然后才能复制到该图像。交换这两条线,你应该很好。

答案 1 :(得分:1)

$ image应该是一个有效的资源,在你的代码中,$ image为null

  $image = imagecreatefrompng($img); 
  imagecopy($image, $status_img, 403, 96, 0, 0, 50, 16);

你可以使用

   $image = imagecreatetruecolor(50, 16); //width,height
   imagecopy($image, $status_img, 403, 96, 0, 0, 50, 16);