Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Generowanie obrazka., Jak to zrobic?
Macok
post 13.10.2006, 14:47:50
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
UDAT
post 13.10.2006, 16:04:52
Post #2





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

Ostrzeżenie: (0%)
-----


imageString
Go to the top of the page
+Quote Post
Trok
post 13.10.2006, 18:04:43
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 12.10.2006

Ostrzeżenie: (0%)
-----


A napisałbyś troche dokładniej?
Go to the top of the page
+Quote Post
mike
post 13.10.2006, 18:11:22
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
Macok
post 14.10.2006, 09:39:51
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Macok 14.10.2006, 09:41:02
Go to the top of the page
+Quote Post
gszesiek
post 14.10.2006, 09:45:58
Post #6





Grupa: Zarejestrowani
Postów: 152
Pomógł: 1
Dołączył: 17.09.2006

Ostrzeżenie: (0%)
-----


Kod
$px    = (imagesx($this->im) - $c_width) / 2;

nie dziel przez 2 smile.gif


--------------------
Go to the top of the page
+Quote Post
Macok
post 14.10.2006, 15:01:07
Post #7





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 31.08.2006

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Macok 14.10.2006, 09:54:02
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:54