Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z generatorem obrazków
-Syriusz-
post
Post #1





Goście







Kod
[/code]Witam, swoja przygodę rozpocząłem z php około tygodnia temu, jednak chyba nieźle mi idzie, jednak napotkałem opór od strony kodu. Chciałem zrobić rozbudowany generator grafiki. i mam 2 pliki:
index.php:
[code]
<head>
<script type="text/javascript">
    window.onload = Laduj;
    var active_id = "";

    function Laduj()
    {
        document.forms['generator'].tlo.onchange = Zmien;
    }

    function Zmien()
    {
        if (active_id != "")
        {
            var blok2 = document.getElementById(active_id);
            blok2.style.display = "none";
        }
        var blok = document.getElementById(this.value);
        blok.style.display = "block";
        active_id = this.value;
    }
</script>

</head>
<body>
<center>
<table name="kreator" width="500" height="400" border="0">

<form name="generator" action="read.php"  method="post">
<tr>
<td>
Nick:<input type="text" name="nick" size="10" value="nick" /> <br>
Rozmiar czcionki: <select name="rozmiar">
        <option>8</option>
        <option>10</option>
        <option>12</option>
        <option>14</option>
        <option>16</option>
        <option>18</option>
        <option>20</option>
        <option>22</option>
        <option>24</option>
        <option>26</option>
        <option>28</option>
        <option>30</option>
        <option>32</option>
        <option>36</option>
        <option>40</option>
        <option>44</option>
        <option>48</option>
        <option>56</option>
        <option>62</option>
        <option>68</option>
        <option>74</option>
    </select><br>
Obróć tekst o: <select name="kat">
        <option>0</option>
        <option>5</option>
        <option>10</option>
        <option>15</option>
        <option>20</option>
        <option>25</option>
        <option>30</option>
        <option>35</option>
        <option>40</option>
        <option>45</option>
        <option>50</option>
        <option>55</option>
        <option>60</option>
        <option>65</option>
        <option>70</option>
        <option>75</option>
        <option>80</option>
        <option>85</option>
        <option>90</option>
        <option>-5</option>
        <option>-10</option>
        <option>-15</option>
        <option>-20</option>
        <option>-25</option>
        <option>-30</option>
        <option>-35</option>
        <option>-40</option>
        <option>-45</option>
        <option>-50</option>
        <option>-55</option>
        <option>-60</option>
        <option>-65</option>
        <option>-70</option>
        <option>-75</option>
        <option>-80</option>
        <option>-85</option>
        <option>-90</option>
    </select>stopni<br>
Położenie nicku:<br>odstęp od góry w pikselach: <input type="text" name="odstep2" size="5" maxlength="3" value="000" /><br>
odstęp od lewej w pikselach: <input type="text" name="odstep1" size="5" maxlength="3" value="000" />
<br>
Wybierz czcionkę: <select name="czcionka">
        <option>arial.ttf</option>
        <option>tahoma.ttf</option>
        <option>verdena.ttf</option>
        <option>base_02.ttf</option>
    </select>
</td></tr>
<tr><td>
Kolor czcionki: <select name="kolor">
        <option value="1" style="background: #FFFFFF; margin: 2px; color: #FFFFFF;" >bialy</option>
        <option value="13" style="background: #C0C0C0; margin: 2px; color: #C0C0C0;" >srebrny</option>
        <option value="6" style="background: #808080; margin: 2px; color: #808080;" >szary</option>
        <option value="12" style="background: #000000; margin: 2px; color: #000000;" >czarny</option>
        <option value="15" style="background: #000080; margin: 2px; color: #000080;" >granatowy</option>
        <option value="niebieski" style="background: #0000FF; margin: 2px; color: #0000FF;" >niebieski</option>
        <option value="17" style="background: #00FFFF; margin: 2px; color: #00FFFF;" >jasnoniebieski</option>
        <option value="7" style="background: #FF00FF; margin: 2px; color: #FF00FF;" >różowy</option>
        <option value="4" style="background: #800080; margin: 2px; color: #800080;" >fioletowy</option>
        <option value="bordowy" style="background: #800000; margin: 2px; color: #800000;" >bordowy</option>
        <option value="czerwony" style="background: #FF0000; margin: 2px; color: #FF0000;" >czerwony</option>
        <option value="pomarańczowy" style="background: #FFA500; margin: 2px; color: #FFA500;" >pomarańczowy</option>
        <option value="żółty" style="background: #FFFF00; margin: 2px; color: #FFFF00;" >żółty</option>
        <option value="limonka" style="background: #00FF00; margin: 2px; color: #00FF00;" >limonka</option>
        <option value="zielony" style="background: #008000; margin: 2px; color: #008000;" >zielony</option>
        <option value="14" style="background: #808000; margin: 2px; color: #808000;" >oliwkowy</option>
        <option value="16" style="background: url:bg1.png; margin: 2px; color: #008080;" >turkusowy</option>
        </select>
</td>
</tr>
<tr width="400">
<td>
Wybierz tło: <select name="tlo">
        <option value="bg1.png">bg1.png</option>
        <option value="bg2.png">bg2.png</option>
        <option value="bg3.png">bg3.png</option>
        </select>
</td>
<td width="200" height="100">
    <div id="bg1.png" style="display: none;"><img src="bg1.png" height="75" width="150"></div>
    <div id="bg2.png" style="display: none;"><img src="bg2.png" height="75" width="150"></div>
    <div id="bg3.png" style="display: none;"><img src="bg3.png" height="75" width="150"></div>
</td>
</tr>
<tr colspan="2"><td>
<INPUT TYPE="submit" VALUE="GENERUJ">
</FORM></td></tr></table>
</center>
</body>


oraz plik read.php:
Kod
<?php

$nick = ($_POST['nick']);
$czcionka = ($_POST['czcionka']);
$tlo = ($_POST['tlo']);
$size = ($_POST['rozmiar']);
$kat = ($_POST['kat']);
$x = ($_POST['odstep1']);
$z = ($_POST['odstep2']);
$kolor = ($_POST['kolor']);

if ($kolor == "niebieski") {
$a = "0";
$b = "0";
$c = "255";
}

if ($kolor == "czerwony") {
$a = "255";
$b = "0";
$c = "0";
}


$rysunek = ImageCreateFromPng($tlo);

$color = ImageColorAllocate($image, $a, $b, $c);

ImageTTFText($rysunek, $size, $kat, $x, $z, $color, $czcionka, $nick);

header("Content-type: image/jpeg");
ImageJpeg($rysunek);


Opis problemu:

Co bym nie robił zawsze tekst jest czarny, $a, $b, $c nie przyjmuje odpowiednich wartości próbowałem na różne sposoby, nawet klient sam wprowadzał w formularzu wartość red, green i blue w polach <input type="text"... i nic to nie dawało...

Prosze o pomoc to bardzo pilne!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Skoro <option value="1" to dlaczego if ($kolor == "niebieski") { ? Trzymaj się jakiegoś zapisu...
Skoro $rysunek = ImageCreateFromPng($tlo); to dlaczego header("Content-type: image/jpeg"); ImageJpeg($rysunek); ?
Skoro $rysunek = ImageCreateFromPng($tlo); to dlaczego $color = ImageColorAllocate($image, $a, $b, $c);
header("Content-type: image/png"); lepiej daj na początku, bo bedziesz miał problemy z wysyłaniem nagłówka.
Jak zakomentujesz header("Content-type: image/png");, to zobaczysz błędy...
Po imagepng($rysunek); daj imagedestroy($rysunek); żeby zwolnić pamięć.
Po za tym, wszystko inne działa.

Co do kolorów, to proponuję takie rozwiązanie (czytelniejsze):
  1. switch ($kolor) {
  2. case '1' : $a = "255"; $b = "255"; $c = "255"; break; // biały
  3. case '2' : $a = "0"; $b = "0"; $c = "255"; break; // niebieski
  4. case '3' : $a = "128"; $b = "0"; $c = "0"; break; // bordowy
  5. case '4' : $a = "128"; $b = "0"; $c = "128"; break; // fioletowy
  6. case '5' : $a = "255"; $b = "0"; $c = "0"; break; // czerwony
  7. case '6' : $a = "128"; $b = "128"; $c = "128"; break; // szary
  8. case '7' : $a = "255"; $b = "0"; $c = "255"; break; // różowy
  9. case '8' : $a = "255"; $b = "165"; $c = "0"; break; // pomarańczowy
  10. case '9' : $a = "255"; $b = "255"; $c = "0"; break; // żółty
  11. case '10' : $a = "0"; $b = "255"; $c = "0"; break; // limonka
  12. case '11' : $a = "0"; $b = "128"; $c = "0"; break; // zielony
  13. case '12' : $a = "0"; $b = "0"; $c = "0"; break; // czarny
  14. case '13' : $a = "192"; $b = "192"; $c = "192"; break; // srebrny
  15. case '14' : $a = "128"; $b = "128"; $c = "0"; break; // oliwkowy
  16. case '15' : $a = "0"; $b = "0"; $c = "128"; break; // granatowy
  17. case '16' : $a = "0"; $b = "128"; $c = "128"; break; // turkusowy
  18. case '17' : $a = "0"; $b = "255"; $c = "255"; break; // jasnoniebieski
  19. }

Do czcionki musi być podana ścieżka albo fonty w katalogu ze skryptem.

Popraw BBcode

Ten post edytował Kshyhoo 16.05.2012, 19:56:58
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 16:08