home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / Chip_2004-04_cd1.bin / chplus / interval / clanek10.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-02-01  |  15.9 KB  |  210 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  12. <meta name='keywords' content='Interval' />
  13. <meta http-equiv='imagetoolbar' content='no' />
  14. <meta http-equiv='MSThemeCompatible' content='no' />
  15. <meta name='MSSmartTagsPreventParsing' content='true' />
  16. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  17. <style media='all' type='text/css'>
  18. @import '__services/styles/interval_articles.css';
  19. </style>
  20. </head>
  21. <body class='interval interval-articles'>
  22. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  23. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  24. <div id='page-body'><div id='page-left'><div id='article'>
  25.  
  26.  
  27.  
  28. <h2>JednoduchΘ grafickΘ poΦφtadlo nßvÜt∞v v PHP</h2>
  29. <p id='prepend'>AΦkoli doba nejv∞tÜφ slßvy grafick²ch poΦitadel nßvÜt∞vnosti ji₧ dßvno pominula a souΦasn² webdesign spolΘhß spφÜe na poΦitadla textovß (pokud je ze strßnek nevynechßvß zcela), m∙₧e se vßm znalost funkce, vytvß°ejφcφ takovΘho obrßzkovΘ poΦitadlo, obΦas docela hodit. A prßv∞ o tom je tento Φlßnek.</p>
  30.  
  31.  
  32. <p>Zßkladnφm p°edpokladem pro vznik grafickΘho poΦitadla je existence grafick²ch soubor∙ (samotn²ch Φφslic), kterΘ funkce slouΦφ do jednoho grafickΘho souboru a ten pak odeÜle klientovi. VÜechny soubory musφ mφt stejnΘ rozm∞ry (funkce si je sama zjistφ), musφ b²t formßtu PNG (na jin² typ by se funkce musela trochu upravit) a jejich nßzvy musφ b²t "0.png", "1.png" a tak dßle a₧ k "9.png". Jestli₧e navφc p°idßme do adresß°e s Φφslicemi soubory "LeftSide.png" a "RightSide.png", pak je naÜe funkce p°idß na pravou a levou stranu v²slednΘho obrßzku, Φφm₧ vytvo°φ rßmeΦek.</p>
  33. <p>Funkci jsem pojmenoval <strong>Number2Img</strong>, co₧ pln∞ vystihuje jejφ funkci. Na vstupu je adresß° s obrßzky Φφslic (bez koncovΘho lomφtka) a Φφslo. Jestli₧e se obrßzky nachßzφ ve stejnΘm adresß°i jako naÜe funkce, parametr $cesta zadßvat nemusφme.</p>
  34.  
  35. <div class='sample'>
  36. function Number2Img ($cislo,$cesta=""){
  37. <br />
  38. <br />   <span class='comment'>// kdy₧ se zadß cesta, p°idßme koncovΘ lomφtko</span>
  39. <br />   $cesta="" ? $cesta="" : $cesta.="/";
  40. <br />
  41. <br />   <span class='comment'>// jmΘna okraj∙</span>
  42. <br />   $lside=$cesta."LeftSide.png"; <span class='comment'>// lev² okraj</span>
  43. <br />   $rside=$cesta."RightSide.png"; <span class='comment'>// prav² okraj</span>
  44. <br />
  45. <br />   <span class='comment'>// podle obrßzku na kterΘm je Φφslice 1 zjistφme Üφ°ku a v²Üku; tento obrßzek musφ existovat!</span>
  46. <br />   list($pic_width, $pic_height, $pic_type, $pic_attr) = getimagesize($cesta."1.png"); <span class='comment'>// tato funkce vracφ pole: index 0-Üφ°ka,1-v²Üka,2-typ (nap°.: "image/png") a 3-atribut tagu img (nap°.:"height=200 width=200")</span>
  47. <br />   $number_width=$pic_width; <span class='comment'>// Üφ°ka jednΘ Φφslice</span>
  48. <br />   $Image_Height=$pic_height; <span class='comment'>// v²Üka jednΘ Φφslice=v²Üka celΘho obrßzku</span>
  49. <br />
  50. <br />   <span class='comment'>// jestli₧e existuje lev² okraj, zjistφme si jeho Üφ°ku</span>
  51. <br />   if (is_file($lside)){
  52. <br />      list($pic_width, $pic_height, $pic_type, $pic_attr) = getimagesize($lside);
  53. <br />      $lside_width=$pic_width;
  54. <br />   } else {
  55. <br />      $lside_width=0;
  56. <br />   }
  57. <br />
  58. <br />   <span class='comment'>// jestli₧e existuje prav² okraj, zjistφme si jeho Üφ°ku</span>
  59. <br />   if (is_file($rside)){
  60. <br />      list($pic_width, $pic_height, $pic_type, $pic_attr) = getimagesize($rside);
  61. <br />      $rside_width=$pic_width;
  62. <br />   } else {
  63. <br />      $rside_width=0;
  64. <br />   }
  65. <br />
  66. <br />   <span class='comment'>// zjistφme si poΦet Φφslic v Φφsle</span>
  67. <br />   $Digits_Count = strlen($cislo);
  68. <br />
  69. <br />   <span class='comment'>// celkovß Üφ°ka obrßzku se vypoΦte jako souΦin Üφ°ky obrßzku a poΦtu Φφslic + Üφ°ky p°φpadn²ch okraj∙</span>
  70. <br />   $Image_Width = (($Digits_Count * $number_width) + $lside_width + $rside_width);
  71. <br />
  72. <br />   <span class='comment'>// vytvo°φme prßzdn² obrßzek</span>
  73. <br />   $Image = imagecreatetruecolor($Image_Width,$Image_Height);
  74. <br />
  75. <br />   <span class='comment'>// P°idßme lev² okraj do obrßzku, kdy₧ existuje</span>
  76. <br />   if (is_file($lside)){
  77. <br />      $image_LeftSide = imagecreatefromPNG($lside);
  78. <br />      imagecopy($Image, $image_LeftSide, 0, 0, 0, 0, $lside_width, $Image_Height);
  79. <br />      imagedestroy($image_LeftSide);
  80. <br />   }
  81. <br />
  82. <br />   <span class='comment'>// P°idßme prav² okraj do obrßzku, kdy₧ existuje</span>
  83. <br />   if (is_file($rside)){
  84. <br />      $image_RightSide = imagecreatefromPNG($rside);
  85. <br />      imagecopy($Image, $image_RightSide, ($Image_Width - $rside_width), 0, 0, 0, $rside_width, $Image_Height);
  86. <br />      imagedestroy($image_RightSide);
  87. <br />   }
  88. <br />
  89. <br />   <span class='comment'>// projdeme vÜechny Φφslice v °et∞zci a vlo₧φme je do v²slednΘho obrßzku</span>
  90. <br />   for($pozice=0; $pozice < $Digits_Count; $pozice++) {
  91. <br />      <span class='comment'>// zjiÜt∞nφ prßv∞ zpracovßvanΘ Φφslice</span>
  92. <br />      $digit = substr($cislo,$pozice,1);
  93. <br />
  94. <br />      <span class='comment'>// cesta prßv∞ zpracovßvanΘ Φφslice</span>
  95. <br />      $digit_name = $cesta. $digit . ".png";
  96. <br />
  97. <br />      <span class='comment'>// zkontrolujeme, zda Φφslice existuje, kdy₧ ne, v celkovΘm obrßzku z∙stane mezera</span>
  98. <br />      if (is_file($digit_name)) {
  99. <br />         <span class='comment'>// v²poΦet pozice prßv∞ zpracovßvanΘ Φφslice</span>
  100. <br />         $digit_pozition = (($pozice*$number_width)+$lside_width);
  101. <br />
  102. <br />         <span class='comment'>// p°eΦteme prßv∞ zpracovßvanou Φφslici</span>
  103. <br />         $digit_image = imagecreatefromPNG($digit_name);
  104. <br />
  105. <br />         <span class='comment'>// vlo₧φme Φφslici do celkovΘho obrßzku</span>
  106. <br />         imagecopy($Image, $digit_image, $digit_pozition, 0, 0, 0, $number_width, $Image_Height);
  107. <br />
  108. <br />         <span class='comment'>// odstranφme z pam∞ti obrßzek prßv∞ zpracovanΘ Φφslice</span>
  109. <br />         imagedestroy($digit_image);
  110. <br />      }
  111. <br />   }
  112. <br />
  113. <br />   <span class='comment'>// odeÜleme hlaviΦku, kterß klientovi °ekne typ odesφlan²ch dat</span>
  114. <br />   header("Content-Type: image/png");
  115. <br />
  116. <br />   <span class='comment'>// poÜleme obrßzek klientovy</span>
  117. <br />   imagePNG($Image);
  118. <br />
  119. <br />   <span class='comment'>// nakonec odstranφme obrßzek z pam∞ti, aby jsme ji nezahltili</span>
  120. <br />   imagedestroy($Image);
  121. <br />
  122. <br />   }
  123. </div>
  124.  
  125. <p>M∙₧ete si <a href='http://php.czechia.com/heller/732/'>vyzkouÜet funkΦnφ ukßzku</a> (<a href='podklady/heller/732/zdroj.zip'>zdroj</a>), mßte-li zßjem. Do textboxu zadejte Φφslo, vyberte styl a stiskn∞te "OK". Zobrazφ se vßm zadanΘ Φφslo v grafickΘ podob∞.</p>
  126. <p>V praxi bychom volali soubor, zpracovßvajφcφ poΦitadlo nap°φklad pomocφ <samp><img src="pocitadlo.php"></samp>, p°iΦem₧ do volanΘho souboru bychom vlo₧ili k≤d, kter² by vrßtil poΦet nßvÜt∞v (nap°φklad z databßze) a zφskanou hodnotu pou₧il jako parametr "$cislo" funkce <strong>Number2Img</strong>:</p>
  127.  
  128. <div class='sample'>
  129. <?
  130. <br />   <span class='comment'>// nejprve vlo₧φme samotnou funkci</span>
  131. <br />   include ("fce,php");
  132. <br />
  133. <br />   <span class='comment'>// kod, kter² nastavφ prom∞nnou $pristupy</span>
  134. <br />   .
  135. <br />   .
  136. <br />   .
  137. <br />
  138. <br />   <span class='comment'>// nakonec funkci zavolßme. Bude odeslßn obrßzek s Φφslem.</span>
  139. <br />   Number2Img($pristupy)
  140. <br />?>
  141. </div>
  142.  
  143. <p>A ·pln∞ na zßv∞r jeden tip. Popisovanß funkce se dß pou₧φt i pro p°evod textu, pokud jφ poskytnete p°φsluÜnΘ soubory, tedy "A.png", "B.png" a dalÜφ...</p>
  144.  
  145.  
  146.  
  147. <div id='article-author'>
  148. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=222'>Heller, Petr</a> (20.1. 2004)
  149.  
  150. </div>
  151.  
  152.  
  153.  
  154. </div></div>
  155. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  156. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  157.  
  158.  
  159.  
  160. <div class='page-right-box book'>
  161.     <h3>Kni₧nφ novinka</h3>
  162.     <div class='page-right-box-in'>
  163.         <div class='book-top'>
  164.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'>NauΦte se ASP. NET za 21 dnφ</a></h4>
  165.         </div>
  166.     </div>
  167.     <div class='image'>
  168.         <a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=236'><img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  169.     </div>
  170.     <div class='book-bottom'>Cena: <span class='book-price-old'>690,00 KΦ</span> <span class='book-price-new'>621,00 KΦ</span></div>
  171. </div>
  172.  
  173.  
  174.  
  175. <div class='page-right-box reading'>
  176.     <h3>NejΦten∞jÜφ</h3>
  177.     <div class='page-right-box-in'>
  178.         <ul>
  179. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1211'>Statistika p°φstup∙ v PHP - detekce operaΦnφho systΘmu</a></li>
  180. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3041'>SMARTY - funkce</a></li>
  181. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3044'>Elektronick² ·°ednφk - pozvoln² zaΦßtek</a></li>
  182. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3064'>Interval v roce 2004: Publish or perish!</a></li>
  183. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3034'>Jak budovat a rozvφjet e-shop - transakce</a></li>
  184.         </ul>
  185.     </div>
  186. </div>
  187.  
  188.  
  189.  
  190. <div class='page-right-box cauldron'>
  191.     <h3>Diskuznφ kotel</h3>
  192.     <div class='page-right-box-in'>
  193.         <ul>
  194. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2561'>Internet Explorer 7 se jmenuje MyIE2</a><div>149 komentß°∙ </div></li>
  195. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2388'>otvovice.cz</a><div>148 komentß°∙ </div></li>
  196. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1304'>BezpeΦnost p°edevÜφm û include v PHP</a><div>95 komentß°∙ </div></li>
  197. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2965'>ImplementaΦnφ chyby v prohlφ₧eΦφch I.</a><div>59 komentß°∙ </div></li>
  198. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2980'>xoprivate.com</a><div>59 komentß°∙ </div></li>
  199.         </ul>
  200.     </div>
  201. </div>
  202.  
  203.  
  204.  
  205. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  206. </div>
  207. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  208. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  209. </body>
  210. </html>