Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana tekstu w obrazek - problem z tłem.
Forum PHP.pl > Forum > PHP
Magiik
Witam.

Mam pewien kod, dzięki któremu po wpisaniu tesktu w pole tekstowe zamienia go w obrazek. Niestety mam problem z dopasowywaniem się tła do długości tekstu. Obecnie tło jest czytane z obrazka i ma one stałą wysokość, nie dopasowuje się do długości wysłanego tekstu. Chciałbym by było ono 'elastyczne' i wraz ze zmienianiem się długości tekstu wysokość tła również się zwiększała.
Próbowałem sam coś zrobić, ale niestety nic z tego nie wyszło, a męczę się z tym już bardzo długi okres czasu.



Oto kod:
  1. <?php
  2. if ($user->verifyLogin()) {
  3. if(isset($_POST['submit_suchar']) and $_GET['co']=='suchar')
  4. {
  5. if(!$_POST['gorny_tekst'] && !$_FILES['obrazek']['name']) {
  6. echo '<b>Nie wypełniono wszystkich pól!</b><br/><a href="dodaj.php">&laquo; Powrót</a>';
  7. }
  8. else {
  9.  
  10. // Funkcja obramowania
  11. function imagettfstroketext(&$image, $size, $angle, $x, $y, &$textcolor, &$strokecolor, $fontfile, $text, $px) {
  12. return imagettftext($image, $size, $angle, $x, $y, $textcolor, $fontfile, $text);
  13. }
  14.  
  15. // Definicje obrazkĂłw
  16. $autor = $user->userInfo("id");
  17. $data=date('d-m-Y H:i');
  18. $url['tlo'] = 'img/suchary/tlo.png';
  19. $tekst_gora = $_POST['gorny_tekst'];
  20. $font = 'img/arial.ttf';
  21. $font_size = 16;
  22.  
  23. #####################################################
  24.  
  25. //Załadowanie tła
  26. $suchar = imagecreatefromstring(file_get_contents($url['tlo']));
  27.  
  28. $font_width = imagefontwidth($font_size);
  29.  
  30. // Dodanie tekstu
  31. $font_color = imagecolorallocate($suchar, 255, 255,255);
  32. $stroke_color = imagecolorallocate($suchar, 0, 0, 0);
  33.  
  34. imagettfstroketext($suchar, $font_size, 0, (50/2), 30, $font_color, $stroke_color, $font, $tekst_gora, 2);
  35.  
  36. // Zapisanie suchara do pliku
  37. $data_img = date("YmdHis");
  38. imagepng($suchar, 'img/upload/'.$data_img.'.png');
  39. $sciezka_suchar = 'img/upload/'.$data_img.'.png';
  40.  
  41.  
  42.  
  43.  
  44.  
  45. $wykonaj = mysql_query("INSERT INTO `shity` (`title`, `img`, `source`, `author`, `data`, `type`) VALUES ('$tekst_gora', '$sciezka_suchar', 'suchar', '$autor', '$data', 'obrazek')");
  46. echo '<b>Obiekt został pomyślnie dodany!</b><br/>
  47. <a href="index.php">&laquo; Strona Główna</a>';
  48. }
  49. }
  50. else {
  51. ?>
  52. <div id="tab">
  53. <ul>
  54. <li id="selected"><a href="dodaj.php?co=suchar"><img src="img/suchar.png" style="position:relative;top:3px;"/> Dodaj Suchara</a></li>
  55. </ul>
  56. </div>
  57. <div id="tab_linia"></div>
  58. <form action="dodaj.php?co=suchar" method="post" name="dynamicselector" enctype="multipart/form-data">
  59. <table>
  60. <colgroup>
  61. <col width="120px;">
  62. <col>
  63. </colgroup>
  64. <tbody><tr>
  65. <td>GĂłrny tekst:</td>
  66. <td>
  67. <textarea name="gorny_tekst">Wpisz tresc suchara</textarea>
  68. </td>
  69. </tr>
  70. <tr>
  71. <td></td>
  72. <td>
  73. <input type="submit" name="submit_suchar" class="button" value="Dodaj" />
  74. </td>
  75. </tr>
  76. </tbody></table>
  77. </form>
  78.  
  79. <script>
  80. var ie4=document.all
  81. var ns6=document.getElementById
  82. var tempobj=document.dynamicselector.kolor_tla
  83. if (ie4||ns6)
  84. var contentobj=document.getElementById? document.getElementById("dynamic3"): document.all.dynamic3
  85. function generateimage(which){
  86. if (ie4||ns6){
  87. contentobj.innerHTML='Ładowanie tła...'
  88. contentobj.innerHTML='<img src="img/suchary/'+which+'" width="150px" height="150px" style="border:1px solid white;margin-left:2px;">'
  89. }
  90. else if (document.layers){
  91. document.dynamic1.document.dynamic2.document.write('<img src="img/suchary/'+which+'" width="150px" height="150px" style="border:1px solid white;margin-left:2px;">')
  92. document.dynamic1.document.dynamic2.document.close()
  93. }
  94. else
  95. alert('You need NS 4+ or IE 4+ to view the images!')
  96. }
  97.  
  98. function generatedefault(){
  99. generateimage(tempobj.options[tempobj.options.selectedIndex].value)
  100. }
  101.  
  102. if (ie4||ns6||document.layers){
  103. if (tempobj.options.selectedIndex!=-1){
  104. if (ns6)
  105. generatedefault()
  106. else
  107. window.onload=generatedefault
  108. }
  109. }
  110.  
  111. </script>
  112.  
  113. <?php
  114. }
  115. }
  116. else {
  117. echo 'Aby dodać nowy obiekt musisz być zalogowany.<br/><br/>
  118. <a href="login.php" class="button" style="float:left;">Logowanie</a>
  119. <a href="rejestracja.php" class="button" style="margin-left:10px;float:left;">Rejestracja</a>
  120. <div style="clear:left;"></div>';
  121. }
  122. ?>



Z góry bardzo dziękuję za pomoc.
Pozdrawiam.
amii
Do funkcji imagecreatetruecolor możesz dostarczyć parametry określające wysokość i szerokość. strlen pobierasz długość tekstu i odpowiednio skalujesz a nastepnie przesyłasz jako parametr width
gr56
Wielkość tekstu możesz pobrać za pomocą imagettfbox
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.