Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tekst w obrazku - imagettftext
KRQ
post 19.01.2009, 16:59:32
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 19.01.2009

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


Witam. Chciałbym utworzyć skrypt dzięki któremu wpisywał bym tekst w obrazek. Kod z php.net:

  1. <?php
  2.    
  3. // Set the content-type
  4. header('Content-type: image/png');
  5.  
  6. // Create the image
  7. $im = imagecreatetruecolor(400, 30);
  8.  
  9. // Create some colors
  10. $white = imagecolorallocate($im, 255, 255, 255);
  11. $grey = imagecolorallocate($im, 128, 128, 128);
  12. $black = imagecolorallocate($im, 0, 0, 0);
  13. imagefilledrectangle($im, 0, 0, 399, 29, $white);
  14.  
  15. // The text to draw
  16. $text = 'Tekst';
  17. // Replace path by your own font path
  18. $font = 'arial.ttf';
  19.  
  20. // Add some shadow to the text
  21. imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
  22.  
  23. // Add the text
  24. imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
  25.  
  26. // Using imagepng() results in clearer text compared with imagejpeg()
  27. imagepng($im);
  28. imagedestroy($im);
  29. ?>


Nie wiem co zrobić abym mógł odnosić się do "$text" z zewnętrznego inputboxa. Chodzi o to że wpisuję coś w inputboxie zatwierdzam i mam ten tekst na jako obrazek, na obrazku. Dobrze by było jeśli utworzony obrazek zapisywał w określonym katalogu na serwerze.
Podsunie ktoś jakiś pomysł?

Pozdrawiam.
Powód edycji: bbcode
Go to the top of the page
+Quote Post
em1X
post 19.01.2009, 17:23:08
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


może samouczek z elementarnych podstaw php?


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
EarthCitizen
post 19.01.2009, 18:02:22
Post #3





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Na początku przyda Ci się formularz:

formularz.html
  1. <form action="skrypt.php" method="post">
  2. <input type="text" name="text" value="" />
  3. <input type="submit" value="Wyślij" />
  4. </form>


i później w Twoim skrypcie zmieniasz aby wartość zmiennej $text była z $_POST['text']

skrypt.php

  1. <?php
  2. // Set the content-type
  3. header('Content-type: image/png');
  4.  
  5. // Create the image
  6. $im = imagecreatetruecolor(400, 30);
  7.  
  8. // Create some colors
  9. $white = imagecolorallocate($im, 255, 255, 255);
  10. $grey = imagecolorallocate($im, 128, 128, 128);
  11. $black = imagecolorallocate($im, 0, 0, 0);
  12. imagefilledrectangle($im, 0, 0, 399, 29, $white);
  13.  
  14. // The text to draw
  15. $text = $_POST['text'];
  16. // Replace path by your own font path
  17. $font = 'arial.ttf';
  18.  
  19. // Add some shadow to the text
  20. imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
  21.  
  22. // Add the text
  23. imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
  24.  
  25. // Using imagepng() results in clearer text compared with imagejpeg()
  26. imagepng($im);
  27. imagedestroy($im);
  28. ?>


Pomijam walidację formularza itd, bo to nie temat postu...

A co do zapisu obrazka na dysku to drugi argument funkcji imagepng($im, 'nazwa_pliku.png'); więcej na temat funkcji znajdziesz w manualu -> http://php.net.pl/manual/pl/function.imagepng.php

Ten post edytował EarthCitizen 19.01.2009, 18:07:08
Go to the top of the page
+Quote Post
KRQ
post 19.01.2009, 18:38:13
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 19.01.2009

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


Dzieki wielkie, z zapisem obrazka na serwerze już sobie poradziłem ale jak zrobić żeby nazwa, nr. obrazka była generowana automatycznie? żeby nie nadpisywało

Kod
imagepng($im, '1.png');


I np. żeby co każdy dodany szedł po kolei albo generował jakiś i sprawdzał czy już nie istnieje.
Go to the top of the page
+Quote Post
EarthCitizen
post 19.01.2009, 19:23:52
Post #5





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


  1. <?php
  2. function numer_ostatniego_obrazka($katalog, $typ)
  3. {
  4.    $ostatni = 0;
  5.    
  6.    $dir = opendir($katalog);
  7.    while ($plik = readdir($dir)) {
  8.        list($nazwa_pliku, $rozszerzenie) = explode('.', $plik);
  9.        
  10.        if ($rozszerzenie <> $typ) continue;
  11.  
  12.        if (is_numeric($nazwa_pliku) && $nazwa_pliku > $ostatni) {
  13.            $ostatni = $nazwa_pliku;
  14.        }
  15.    }
  16.    
  17.    return $ostatni;
  18. }
  19. ?>


Taka prosta funkcja powinna Ci wystarczyć smile.gif zwraca ostatnią numeryczną nazwę pliku w danym katalogu (argument 1) o podanym typie (argument 2).

Ten post edytował EarthCitizen 19.01.2009, 19:37:02
Go to the top of the page
+Quote Post
KRQ
post 19.01.2009, 19:29:53
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 19.01.2009

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


Chodzi mi o taki skrypt jak na
Kod
SigPoll.com
Generator ankiet, który właśnie wpisuje pytanie w obrazek i możliwe odpowiedzi także, po czym umieszcza link w odpowiedziach i generuje tagi bbcode.
Go to the top of the page
+Quote Post
EarthCitizen
post 19.01.2009, 19:40:04
Post #7





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


OMG :/ Trochę skomplikowany skrypt sobie wybrałeś jak na naukę PHP smile.gif
Samo generowanie obrazków Ci nie wystarczy. Musisz do tego zrobić jakąś bazę danych i całą otoczkę... Hmm... Powodzenia winksmiley.jpg

Ten post edytował EarthCitizen 19.01.2009, 19:42:00
Go to the top of the page
+Quote Post
ManiQu
post 20.01.2009, 19:35:51
Post #8





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 2.09.2007

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


Po co się bawić po kolei. Można równie dobrze wylosować nazwę, np.
$nazwa = rand(1000,9999);
Potem
if(!file_exists('$nazwa.$rozszerzenie')){
skrypt
}

Ale jak on odsyłacz zrobił na obrazku to ja nie wiem. Wydaje mi się, że to już jest naniesione html'em, bo nie widziałem takiej funkcji w GD.

Ten post edytował ManiQu 20.01.2009, 19:51:13
Go to the top of the page
+Quote Post
EarthCitizen
post 20.01.2009, 19:43:32
Post #9





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Cytat(ManiQu @ 20.01.2009, 19:35:51 ) *
Po co się bawić po kolei. Można równie dobrze wylosować nazwę, np.
$nazwa = rand(1000,9999);
Potem
if(!file_exists('$nazwa.$rozszerzenie')){
skrypt
}

Co do obrazka na obrazku użyj:
imagecopy


no to wyobraź sobie, że masz w tym katalogu 8998 obrazków... Ile zajmie znalezienie wolnej nazwy? Chyba szybciej dysk padnie smile.gif
Go to the top of the page
+Quote Post
ManiQu
post 20.01.2009, 20:05:18
Post #10





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 2.09.2007

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


$nazwa = rand(10000000,999999999);
lub dodac do tego litery, jaki problem

Ten post edytował ManiQu 20.01.2009, 20:06:55
Go to the top of the page
+Quote Post
EarthCitizen
post 20.01.2009, 20:11:21
Post #11





Grupa: Zarejestrowani
Postów: 286
Pomógł: 70
Dołączył: 13.01.2009

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


Trzymanie za dużej ilości plików w jednym katalogu to też problem... Zresztą dla mnie ta dyskusja nie ma sensu... Osobiście wolałbym aby pliki miały nazwy typu rosnące id, takie rozwiązania są powszechne i mają kilka właściwości, które mogą się przydać....
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: 15.08.2025 - 04:24