Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie obrazka i imagettftext()
Forum PHP.pl > Forum > PHP
corey1991
Witam, próbuje zrobić weryfikacje obrazkową do rejestracji i robię to tak:
  1. header('Content-type: image/png');
  2.  
  3. // Create the image
  4. $im = imagecreatetruecolor(400, 300);
  5.  
  6. // Create some colors
  7. $white = imagecolorallocate($im, 0, 0, 255);
  8. $grey = imagecolorallocate($im, 128, 128, 128);
  9. $black = imagecolorallocate($im, 0, 0, 0);
  10. imagefilledrectangle($im, 0, 0, 399, 229, $white);
  11.  
  12. // The text to draw
  13. $text = 'Testing...';
  14. // Replace path by your own font path
  15. $font = 'RAVIE.ttf';
  16.  
  17. // Add the text
  18. imagettftext($im, 20, 10, 10, 50, $black, $font, $text);
  19.  
  20. // Using imagepng() results in clearer text compared with imagejpeg()
  21. imagepng($im);
  22. imagedestroy($im);


Problem tkwi w tym że na localhoście działa bez zarzutu (XAMPP version 1.6.7), a jeśli wrzucę na jakiś hosting to nie działa. Mam konto na NetHosting, pakiet obsługuje PHP 4 i 5, a wyświetla się adres strony zamiast obrazu bez żadnego błędu.
Testowałem również na darmowym koncie CBA i też obsługuje PHP a wyświetla się samo tło ale tekstu już nie wypisuje. Jaka może być przyczyna tego?
darko
A masz wrzucony font RAVIE.ttf w odpowiednim miejscu ? Poza tym tworzysz gifa, a w nagłówku deklarujesz Content-type: image/jpeg
corey1991
Kod poprawiłem ale teraz na NetHostingu wyświetla się napis że nie można wyświetlić obrazka ponieważ zawiera błędy, na CBA samo tło a na localhoście wszystko działa.
Plik Ravie.ttf mam w tym samym miejscu co plik z kodem.
darko
Może zapisz: imagepng($im, "myfile.png"); i przekieruj żeby wyświetlić? Zmieniłeś content type dla header? Upewnij się że chmod całego katalogu i skryptu jest prawidłowy (0777).
corey1991
Mam coś takiego teraz ale na każdym wyświetla że obrazek zawiera błędy. Jeśli zamiast funkcji ImageTTFText użyje ImageString to obraz się wyświetla, tylko wtedy wyświetla standardową czcionką a zależy mi na innej.
  1.  
  2. chmod("RAVIE.ttf", 0777);
  3. chmod("a.php", 0777);
  4. header('Content-type: image/gif');
  5. $im = imagecreatetruecolor(400, 300);
  6. $white = imagecolorallocate($im, 100, 100, 255);
  7. $grey = imagecolorallocate($im, 128, 128, 128);
  8. $black = imagecolorallocate($im, 0, 0, 0);
  9. imagefilledrectangle($im, 0, 0, 399, 229, $white);
  10. $text = 'Testing...';
  11. $font = 'RAVIE.ttf';
  12. imagettftext($im, 20, 10, 10, 50, $black, $font, $text);
  13. imagegif($im, "myfile.gif");
  14. imagedestroy($im);
darko
A czy Twój dostawca hostingu nie dokleja przypadkiem kodu reklam do Twoich skryptów? Może to dlatego nie mogłeś wyświetlić obrazka z pomocą header, bo została doklejona reklama?
corey1991
Na CBA możliwe, chociaż w źródłach strony niczego nie ma, ale na płatnym to raczej nie możliwe. A może coś z tą funkcją ImageTTFText jest nie tak? Jest zablokowana? Jest taka możliwość?
darko
Jest taka opcja, chociaż pewnie wywaliłoby błąd, najlepiej sprawdź sobie
  1. if(function_exists('imagettftext')) {
  2. echo "ok";
  3. } else {
  4. echo "nie ma!";
  5. }

corey1991
Funkcja jest. Nie mam pojęcia dlaczego na localhoście śmiga a na serwerze nie chce ;/ chyba się poddam i zrobię to z ImageString. Dzięki za pomoc winksmiley.jpg
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.