Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Generowanie obrazka.
Forum PHP.pl > Forum > PHP
Macok
Jak zrobic cos takiego jak na: http://www.tibia.org.pl/static/out/stat.php ?
Chodzi oto ze skrypt generuje obrazek w zaleznosci od tego co sie wpisze w formularzu. Zupełnie nie wiem na czym to polega.
Tak wiec zalózmy ze mam jakąś zmienną. Co zrobić zeby skrypt wygenerowal obrazek na ktorym ta zmienna bedzie napisana?

PS. Jak ktos nie wie oco mi chodzi to niech wejdzie na http://www.tibia.org.pl/static/out/stat.php.
UDAT
imageString
Trok
A napisałbyś troche dokładniej?
mike
Cytat(Trok @ 13.10.2006, 19:04:43 ) *
A napisałbyś troche dokładniej?

A przeczytałbyś manuala mad.gif
Nie chce się?

Jest biblioteka do obróbki grafiki: GD :: Image Functions
Pełno przykładów i opisów. Wystarczy poczytać.
Macok
Znalazlem dobry kod i za jego pomoca sie udało. Ale mam jeszcze 1 pytanie.
Co zrobic zeby ten napis nie byl na srodku obrazka, tylko np. po lewej?
  1. <?php
  2.  
  3. $string = $_GET['text'];
  4.  $img=new pullImage("obrazki/wm.png",
  5. 8,0,0,"12345678","png");
  6.  $img->setPaintColor(10,22,20);
  7.  $img->setPaintSize(8);
  8.  $img->setDrawText($string);
  9.  $img->DrawText();
  10.  
  11.  
  12. class pullImage{
  13.  var $img_font_size=4;
  14.  var $origin_file_path="";
  15.  var $paint_color=array(0,0,0);
  16.  var $im=0;
  17.  var $poision_x=0;
  18.  var $poision_y=0;
  19.  var $poision_z=0;
  20.  var $pull_text="testing";
  21.  var $pull_image_type="png";
  22.  function pullImage($source_file_path="",$front_size=3,
  23. $p_x=0,$p_y=0,$draw_text="png",$picture_type="png")
  24. {
  25.  $this->img_font_size=$front_size;
  26.  $this->origin_file_path=$source_file_path;
  27.  $this->poision_x=$p_x;
  28.  $this->poision_y=$p_y;
  29.  $this->pull_image_type=$picture_type;
  30.  $this->pull_text=$draw_text;
  31.  }
  32.  function setPaintColor($red=0,$green=0,$blue=0)
  33.  {
  34.  $this->paint_color[0]=$red;
  35.  $this->paint_color[1]=$green;
  36.  $this->paint_color[2]=$blue;
  37.  }
  38.  function setPaintSize($fontsize)
  39.  {
  40.  $this->img_font_size=$fontsize;
  41.  }
  42.  function setImageType($type)
  43.  {
  44.  $this->pull_image_type=$type;
  45.  }
  46.  function setDrawText($txt)
  47.  {
  48.  $this->pull_text=$txt;
  49.  }
  50.  function DrawText()
  51.  {
  52.  $this->im=$this->createImgageFormFile();
  53.  if(!$this->im)
  54.  {
  55.  $this->responseError();
  56.  return;
  57.  }
  58.  $paint_color=$this->fill_solid_color($this->im);
  59.  $c_width = ImageFontWidth($this->img_font_size) * strlen($this->pull_text);
  60.  $c_height = ImageFontHeight($this->img_font_size);
  61.  $px = (imagesx($this->im) - $c_width) / 2;
  62.  $py = (imagesy($this->im)-$c_height)/2;
  63.  $this->pull_header();
  64.  imagestring($this->im, $this->img_font_size, 
  65. $px, $py, $this->pull_text, $paint_color);
  66.  $this->pull_Image($this->im);
  67.  imagedestroy($this->im);
  68.  }
  69.  function responseError()
  70.  {
  71.  echo("<p>Can't create image!</p>");
  72.  }
  73.  function pull_header()
  74.  {
  75.  switch(strtolower($this->pull_image_type))
  76.  {
  77.  case "png":
  78.  header("Content-type: image/png");
  79.  break;
  80.  case "jpg":
  81.  header("Content-type: image/jpeg");
  82.  break;
  83.  case "gif":
  84.  header("Content-type: image/gif");
  85.  default:
  86.  header("Content-type: image/png");
  87.  break;
  88.  }
  89.  }
  90.  function pull_Image($im)
  91.  {
  92.  if(!$im)return;
  93.  switch(strtolower($this->pull_image_type))
  94.  {
  95.  case "png":
  96.  @imagepng($im);
  97.  break;
  98.  case "jpg":
  99.  @imagejpeg($im);
  100.  break;
  101.  case "gif":
  102.  @imagegif($im);
  103.  default:
  104.  @imagepng($im);
  105.  break;
  106.  }
  107.  }
  108.  function createImgageFormFile()
  109.  {
  110.  $im=0;
  111.  if($this->origin_file_path=="")
  112.  return $im;
  113.  switch(strtolower($this->pull_image_type))
  114.  {
  115.  case "png":
  116.  $im=@imagecreatefrompng($this->origin_file_path);
  117.  break;
  118.  case "jpg":
  119.  $im=@imagecreatefromjpg($this->origin_file_path);
  120.  break;
  121.  case "gif":
  122.  $im=@imagecreatefromgif($this->origin_file_path);
  123.  default:
  124.  $im=@imagecreatefrompng($this->origin_file_path);
  125.  break;
  126.  }
  127.  if(!$im)
  128.  {
  129.  $im = @imagecreate (120, 40); /* Create a blank image */
  130.  $bgc = @imagecolorallocate ($im, 255, 255, 255);
  131.  @imagefilledrectangle ($im, 0, 0, 120, 40, $bgc);
  132.  }
  133.  return $im;
  134.  }
  135.  function fill_solid_color($im)
  136.  {
  137.  $ret=@imagecolorallocate($im,$this->paint_color[0],
  138. $this->paint_color[1],$this->paint_color[2]);
  139.  return $ret;
  140.  }
  141. }
  142.  
  143. ?>
gszesiek
Kod
$px    = (imagesx($this->im) - $c_width) / 2;

nie dziel przez 2 smile.gif
Macok
Dzieki gszesiek,
Powiedzcie jeszcze tylko, co zrobic zeby na tym samym obrazku napisac wiecej napisów?
Bo chcialbym zeby jeden napis był po lewej drugi po prawej itp.

PS. Jak zmienic czcionke ktora bedzie na obrazku?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.