Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Polskie znaki na obrazku za pomocą GD?
Forum PHP.pl > Forum > Przedszkole
Micchaleq
Witam mam kolejny problem,

Otóż chciałbym jakoś wygenerować sobie obrazek z tekstem zawierającym polskie znaki.

Dotychczas pisałem strony w utf-8 i nie miałem problemu.
Pisze w pspadzie i kodowanie przestawiłem sobie na utf-8

A oto początek mojego kodu :

  1. <?php
  2. header('content-type: text/html; charset=utf-8');
  3. header('content-type: image/jpeg');
  4.  
  5. $czcionki = glob("captcha_fonts/*.ttf");
  6.  
  7. $znaki = 'ą ę ż ź ó ń Ż Ą ';
  8.  
  9. $obrazek_tla = 'captcha_bcg/aa.jpg';
  10. $liczba_znakow = '1';


czcionka jaką pobieram to arialbold
darko
Jeśli korzystasz z funkcji imagettftext to upewnij się, że czcionka arialbold ma odpowiednie diakrytyki polskie (otwórz plik czcionki .ttf jakimś narzędziem do podglądu fontów, w windowsie powinien być standardowy podgląd czcionki).
nekomata
Czcionki windowsowe są w katalogu "C:\Windows\Fonts",szczerze mówiąc zakładałem że jeśli czcionka obsługuje polskie znaki to nie powinno być problemów racja?Czy jest inaczej?
Micchaleq
no właśnie chodzi o to, że używam tych windowsowych i nie wyświetla mi polskich znaków.
Arial, Courier - to czcionki które powinny działać a nie działają.

Najdziwniejsze dla mnie jest to, że jak daje 2 błędą literę np w moim tekscie występuje 2x ł to skrypt wywala błąd.
cycofiasz
Jaki błąd?

Sam używałem zwykłej czcionki Arial (strona kodowa dokumentu UTF-8) i nie miałem problemów z polskimi znakami.
Micchaleq
Witam ponownie nie dodałem, że używam funkcji
imagettftext();
$znaki = 'asda a ć ń ż ź ą łł ą ć ż ź ń';

Przy wpisaniu takich znaków zamiast obrazka wyświetla mi się na stronie ścieżka do strony którą otwieram a obrazek sie nie generuje.

Może za dużo jest znaków. Nie wiem w każdym bądz razie zamiast polskich liter pokazują się kwadraty.

Czy ktoś miał może podobny problem?

wydaje mi się, że jest to problem pobierania znaków z innej strony.
Z tego co widzę allegro jest zakodowane w utf8.
szczeku
o ile sie nie myle, bo też miałem kiedyś ten problem, to pomogła zmiana kodowania dokumentu na utf8 bez BOM czy jakos tak to sie nazywa. Spróboj moze zadziala.
Micchaleq
Witam zmiana kodowania nic a nic nie daje w napisach na zdjęciach.

zmieniłem troche funkcje pisania tekstu może ktoś to przejrzy i dostrzeże jakiś błąd albo coś poradzi.

Funkcja pobiera automatycznie tekst.
Strona indexowa która używa tej funkcji jest zakodowana w utf-8 i z tego co widzę zmienna przyjmuje prawidłowe litery.
Zmienia się to juz przy wprowadzaniu tekstu na obrazek.

  1. <?php
  2.  
  3. function tytul($znaki, $nr_folderu){
  4. putenv('GDFONTPATH=' . realpath('.'));
  5.  
  6. $obrazek_tla = "./robocze/tytul.jpg";
  7. $im = imagecreatefromjpeg($obrazek_tla);
  8. $text_color = imagecolorallocate($im, 0, 0, 0);
  9.  
  10. $text = '$znaki';
  11. $font = './timesbd.ttf';
  12.  
  13.  
  14. imagettftext($im, 8, 0, 0, 21, $text_color, $font, $znaki);
  15.  
  16. $fot = './tytul.jpg';
  17. imagejpeg($im, $fot, 100);
  18. imagedestroy($im);
  19.  
  20. }
  21. ?>


teraz przy tytułach gdzie mam polskie litery wyświetlany jest błąd :
Warning: imagettftext() [function.imagettftext]: any2eucjp(): something happen in

Witam serdecznie,

bardzo dziękuję wszystkim za pomoc.

Z tego co wujek google mi powiedział problem z wersją 5.1 PHP ( o ile się nie mylę )
Na serwerze wszystko pięknie hula .
Mrokodajny
Mam taki kod

<?PHP

header('content-type: text/html; charset=utf-8');

function getImageWithText($text, $font, $size)
{
$arr = imagettfbbox($size, 0, $font, $text);
$width = abs($arr[2] - $arr[0]) + 5;
$height = abs($arr[1] - $arr[7]) + 1;
$img = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);

imagefill($img, 0, 0, $white);
imagettftext($img, $size, 0, 0, $height - 5, $black, $font, $text);

return $img;
}

$img = getImageWithText("ĄĘĆŹŻłżźćńłąę", "arial.ttf",30);
imagejpeg($img,"plik.jpg");
imagedestroy($img);
echo('<img src="plik.jpg" />');

?>



I mam pytanko dlaczego nie wyświetlają się polskie znaki
Może ktoś by mi podał gotowy kod jak wyświetlić polskie znaki
a nie takie tam gadanie
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.