0

PHP GD ライブラリを使用して PNG 画像を生成すると、すべてが正常に機能しているように見え、エラーは発生しません。しかし、ブラウザは私の画像をレンダリングできません。

生成された PNG をダウンロードし、Ultraedit で通常の PNG と比較すると、ファイルの先頭に余分な 20 (Hex モード) があることがわかりました。Ultraedit から 20 を削除すると、PNG は正常に機能します。

コードを確認しましたが、0x20 を与える行が見つかりません。

コードの相対部分は次のとおりです。

  public function imggen($string = "Enter your own lyric.",
                         $size = 35,
                         $lineheight = 50,
                         $font = "./fonts/w6.ttf",
                         $meta = "Project Gy Picture Generation",
                         $metasize = 10, 
                         $metalineh = 25, 
                         $bg_src = "./img/bg/bg1.png",
                         $textcolor = "w",
                         $width=640,
                         $height=596, 
                         $x_offset = 30,
                         $y_offset = 30,
                         $position="cc",
                         $bgpos = 5){
    $logo_src ='./img/bg/wtm-'.$position[1].'-'.$textcolor.'.png';
    $logo = ImageCreateFromPNG($logo_src);
    $bg = ImageCreateFromPNG($bg_src);
    $bgcrop = imagecreatetruecolor($width,$height);
    $bgW = ImageSX($bg);
    $bgH = ImageSY($bg);

    if ($bgpos == 1||$bgpos == 2||$bgpos == 3){$src_y = 0;}
      elseif ($bgpos == 4||$bgpos == 5||$bgpos == 6){$src_y = ($bgH - $height)/2;}
      else{$src_y = $bgH - $height;}

    if ($bgpos == 1||$bgpos == 4||$bgpos == 7){$src_x = 0;}
      elseif ($bgpos == 2||$bgpos == 5||$bgpos == 8){$src_x = ($bgW - $width)/2;}
      else{$src_x = $bgW - $width;}

    imagecopyresized($bgcrop,$bg,0,0,$src_x,$src_y,$width,$height,$width,$height);
    ImageDestroy($bg);
    $logoW = ImageSX($logo);
    $logoH = ImageSY($logo);
    $strings = explode("\n", $string);
    $color = ($textcolor == "b") ? imagecolorallocate($bgcrop, 0, 0, 0) : imagecolorallocate($bgcrop, 255, 255, 255); 
    if ($position[1]=="l"){$anchorX = $x_offset;}//Horiz. left
    elseif($position[1]=="c"){$anchorX = $width / 2;} //Horiz. Center
    elseif($position[1]=="r"){$anchorX = $width - $x_offset;} //Horiz Right

    if ($position[0]=="t"){$anchorY = $y_offset;} //Vert. Top
    elseif($position[0]=="c"){$anchorY = ($height / 2)-(($lineheight * count($strings) + $metalineh + 20+$logoH)/2);} //Vert. Center
    elseif($position[0]=="b"){$anchorY = $height - ($lineheight * count($strings) + $metalineh + 20 + $logoH + $y_offset);} //Vert. Bottom
    $lineacuu = $anchorY + $lineheight;
    //imageline($bgcrop,0,($lineacuu),300,($lineacuu),$color);
    foreach($strings as $line){
      if ($position[1]=="l"){imagettftext($bgcrop, $size, 0, ($anchorX), ($lineacuu), $color, $font, $line);}//Horiz. left
      elseif($position[1]=="c"){$this->imagettftext_ca($bgcrop, $size, 0, ($anchorX), ($lineacuu), $color, $font, $line);} //Horiz. Center
      elseif($position[1]=="r"){$this->imagettftext_ra($bgcrop, $size, 0, ($anchorX), ($lineacuu), $color, $font, $line);} //Horiz Right

      $lineacuu += $lineheight;
    }

    $lineacuu += $metalineh - $lineheight;

    if ($position[1]=="l"){imagettftext($bgcrop, $metasize, 0, ($anchorX), ($lineacuu), $color, $font, $meta);}//Horiz. left
    elseif($position[1]=="c"){$this->imagettftext_ca($bgcrop, $metasize, 0, ($anchorX), ($lineacuu), $color, $font, $meta);} //Horiz. Center
    elseif($position[1]=="r"){$this->imagettftext_ra($bgcrop, $metasize, 0, ($anchorX), ($lineacuu), $color, $font, $meta);}
    imageline($bgcrop,0,($lineacuu+10),1500,($lineacuu+10),$color);
    ImageAlphaBlending($bgcrop, true);
    if ($position[1]=="l"){$logoX = $x_offset;}//Horiz. left
    elseif($position[1]=="c"){$logoX = $width / 2 - $logoW/2;} //Horiz. Center
    elseif($position[1]=="r"){$logoX = $width - $x_offset - $logoW;}
    ImageCopy($bgcrop, $logo, ($logoX), ($lineacuu + 20), 0, 0, $logoW, $logoH);
    ImagePng($bgcrop);
  }

  public function imggen_db($img_id)
  {
    $fname = $this->config->item('fname');
    $fpath = $this->config->item('fpath');
    $post = $this->get_by_id($img_id);

    $bgpath = "./img/bg/bg".$post->background.".png";
    $this->imggen($post->lyric,
                  $post->size,
                  $post->lineheight,
                  str_replace($fname,$fpath,$post->font),
                  $post->meta,
                  $post->metasize, 
                  $post->metalineh, 
                  $bgpath,
                  $post->textcolor,
                  $post->width,
                  $post->height,
                  $post->x_offset,
                  $post->y_offset,
                  $post->style,
                  $post->bgpos);
  }

完全なコードはhttps://github.com/1a23/project-gyで入手できます
このコードは CodeIgniter フレームワークで動作します

4

1 に答える 1

3

./application/config/version.php の前にスペースがあります<?php

于 2013-07-07T04:50:48.220 に答える