Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]imagettftext() i polskie znaki
wizu
post 16.02.2008, 19:17:13
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Witam. Chciałbym dodać tekst do obrazka. Tekst jest przesyłany z formularza.
Kod
$text = htmlspecialchars($_POST['text']);
   imagettftext($stary, 10, 0, 29, 20, $kolor, "arial.ttf" , $text);

I na obrazku mam jakieś takie dziwne coś. Gdy podaje tekst normalnie, to jest ok. Jednak, gdy tekst jest przesyłany POST-em, to już się psuje. Czcionka oczywiście jest na serwerze. Dzięki za pomoc.

Lepiej to wyjaśniłem w poście 7.

Ten post edytował wizu 16.02.2008, 22:51:17
Go to the top of the page
+Quote Post
nowotny
post 16.02.2008, 19:22:09
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


"takie dziwne coś" to nie jest określenie problemu... Jakie dziwne coś...? i po co stosujesz htmlspecialchars...?
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 21:04:43
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


htmlspecialchars używam, żeby mi ktoś czegoś nieoczekiwanego nie podał. A takie coś dziwne, to wydawało mi się, że każdy załapie o co mi chodzi. Jednak jeśli nie, to chodzi mi o to, że zamiast:
ęóąśłżźćń mam

Czyli po prostu nie ma polskich znaków. A w czcionce są. Próbowałem już chyba wszystkiego co znalazłem na necie, jednak nic nie pomoga. A iconv() nie chce używac, bo za bardzo obciąża serwer.
Go to the top of the page
+Quote Post
MajareQ
post 16.02.2008, 21:18:04
Post #4





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Nie da rady. Nie można stosować w adresie polskich znaków. Zatem GET odpada.

Chociaż... przyjrzyj się jak to rozwiązała Wikipedia.

Przykład -> http://pl.wikipedia.org/wiki/Strona_g%C5%82%C3%B3wna

chodzi o "Strona Główna"

http://www.hotscripts.pl/produkt-2153.html
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 21:20:00
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Hmm to jest pomysł. Dzięki wilekie.
Go to the top of the page
+Quote Post
MajareQ
post 16.02.2008, 21:27:58
Post #6





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Jak dojdziesz do tego jak to zrobić to podziel się wiedzą i powiedz czy coś pomogłem winksmiley.jpg
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 22:13:21
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Jasne, tylko to się przyda później. Narazie mam przesyłanie POST-em. Pomyliłem się w pierwszym poscie. Wybacz. Chciałem sobie potestować, jak to jest z tym tekstem. I gdy zamiast dodawac tekst do obrazka, wyświetliłem $_POST['text'], to polskie znaczki działają tak jak powinny. Jednak, gdy tylko próbóję je narzucić na obrazek, to juz jest tak jak na zdjęciu. Więc tekst jest normalny po przesłaniu, tylko przy wyświetlaniu coś się psuje. Nie wiem, czy ta funkcja nie potrafi tego zrobić czy co? Wie ktoś coś na ten temat? Dzięki.
Edit
Teraz zaobserwowałem coś jeszcze dziwniejszego. Gdy wyświetlam, to w ten sposób:
Kod
imagettftext($stary, 10, 0, 29, 20, $kolor, "arial.ttf" , 'ąść');

To widzę to:
A gdy w poprzednim pliku index.html mam taki formularz (wpisuje w nim też ąść) :
Kod
<form action="dalej.php" method="POST">
<input type=text name="text" size="50"/>
<input type=submit value="Dalej ->"/>
</form>

A w pliku dalej.php dodaje napis na obrazek tak:
Kod
$text = $_POST['text'];
imagettftext($stary_plik, $fontsiz, 0, $rozmiarx, $rozmiary, $kolor, "arial.ttf" , $text);

To widzę to:

Teraz już sam nic nie wiem. Pomoże ktoś, co zrobić, aby wyświetlały siepolskie znaki na obrazku? Dzięki.

Ten post edytował wizu 16.02.2008, 22:26:45
Go to the top of the page
+Quote Post
nowotny
post 16.02.2008, 22:26:16
Post #8





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Jakiego kodowania używasz na stronie...? tekst musi być w UTFie...

Przykład z manuala który u mnie działa:
  1. <?php
  2. header("Content-type: image/png");
  3.  
  4. // Create the image
  5. $im = imagecreatetruecolor(400, 30);
  6.  
  7. // Create some colors
  8. $white = imagecolorallocate($im, 255, 255, 255);
  9. $grey = imagecolorallocate($im, 128, 128, 128);
  10. $black = imagecolorallocate($im, 0, 0, 0);
  11. imagefilledrectangle($im, 0, 0, 399, 29, $white);
  12.  
  13. // The text to draw
  14. $text = 'ęółąśżźćńć ĘÓŁĄŚŻŹĆŃ';
  15. // Replace path by your own font path
  16. $font = 'arial.ttf';
  17.  
  18. // Add some shadow to the text
  19. imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
  20.  
  21. // Add the text
  22. imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
  23.  
  24. // Using imagepng() results in clearer text compared with imagejpeg()
  25. imagepng($im);
  26. imagedestroy($im);
  27. ?>

Tylko musisz uważać żeby plik zapisać w UTFie...

Ten post edytował nowotny 16.02.2008, 22:32:24
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 22:42:05
Post #9





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


W tym pliku php, który wyświetla obrazek nie mogę sobie zmienić kodowania. Bo w nim nie mogę użyć żanego znacznika html. Co masz na myśli piszać "Tylko musisz uważać żeby plik zapisać w UTFie..." bo nie bardzo zrozumiałem o jaki plik chodzi. Dzięki
Go to the top of the page
+Quote Post
MajareQ
post 16.02.2008, 22:43:42
Post #10





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Nie możesz użyć meta? Dlaczego?
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 22:46:02
Post #11





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Bo używam header("Content-type: image/png");
Już same <html></html> psują wyświetlenie grafiki.
A co do pomysłu nowotny, to dalej są te dziwne znaczki. Może to to, że plik nie jest zapisany w UTF-ie. Jednak nie wiem jak to zmienić tongue.gif Dzięki jeszcze raz za pomoc.

Ten post edytował wizu 16.02.2008, 22:50:06
Go to the top of the page
+Quote Post
nowotny
post 16.02.2008, 22:50:17
Post #12





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(wizu @ 16.02.2008, 22:46:02 ) *
Bo używam header("Content-type: image/png");
Już same <html></html> psują wyświetlenie grafiki.

Nie w tym pliku, tylko w tym z którego przesyłasz tekst... a kodowanie sobie ustaw w edytorze... żeby plik php był w utf zakodowany... jaki masz edytor...?
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 22:52:37
Post #13





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Heh notatnik tongue.gif Dobra, przerzuce się na pajączka.
Go to the top of the page
+Quote Post
MajareQ
post 16.02.2008, 22:54:18
Post #14





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


przeżuć się na Notepad++ lub Notatnik SP
Go to the top of the page
+Quote Post
wizu
post 16.02.2008, 23:02:35
Post #15





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Panowie chwała wam za pomoc smile.gif Już wszystko jest ok. W pliku index.html, gdzie był formularz trzeba było zmienić kodowanie na UTF-8. Dzięki jeszcze raz smile.gif
Go to the top of the page
+Quote Post
MajareQ
post 16.02.2008, 23:05:10
Post #16





Grupa: Zarejestrowani
Postów: 382
Pomógł: 22
Dołączył: 21.05.2007
Skąd: Elbląg

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


Z ciekawości, mógłbyś mi wysłać link na PW? winksmiley.jpg
Go to the top of the page
+Quote Post
wizu
post 17.02.2008, 12:12:05
Post #17





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Co do polskich znaków metodą GET, to juz rozwiązałem ten problem. (A tak między nami, to wikipedia sobie tez z nimi nie radzi tongue.gif)
Wystarczy wstawić takie cos i wszystko śmiga:
Kod
$text = urlencode($_GET['text']);
$trans = array("+" => " ", "%EA" => "ę", "%F3" => "ó", "%B9" => "ą", "%9C" => "ś", "%B3" => "ł", "%BF" => "ż", "%9F" => "ź", "%E6" => "ć", "%F1" => "ń", "%3F" => "?", "%21" => "!");
echo strtr($text, $trans);
Go to the top of the page
+Quote Post
nowotny
post 17.02.2008, 12:43:36
Post #18





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(wizu @ 17.02.2008, 12:12:05 ) *
  1. <?php
  2. $trans = array("+" => " ", "%EA" => "ę", "%F3" => "ó", "%B9" => "ą", "%9C" => "ś", "%B3" => "ł", "%BF" => "ż", "%9F" => "ź", "%E6" => "ć", "%F1" => "ń", "%3F" => "?", "%21" => "!");
  3. ?>

Od tego jest funckja urldecode" title="Zobacz w manualu PHP" target="_manual... :/
Go to the top of the page
+Quote Post
Tadek888
post 1.12.2011, 20:24:11
Post #19





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 21.04.2009
Skąd: Białogóra

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


Witajcie
stary ten wątek ale zagaję...

Mam podobny problem chociaż może tu chodzić o naturę czcionki.
Używam dokładnie tego samego skryptu który jest jako przykład w manualu php jak wyszukamy : imagettftext

Jak używam czcionki arial to wszystko gra. Jeśli użyję Trajan Pro to polskie znaki zamieniają się w krzaki dokładniej w prostokąt z poprowadzonymi przekątnymi.
Jak zrobię windowsowy podgląd czcionki trajan to są polskie znaki. To samo jeśli użyję jej w photoshopie. Pytanie czemu nie w imagettftext ?

Pozdrawiam

Już wiadomo

trajan początkowo był w OTF - tak więc polskie znaki zaczęły działać jak się wrzuciło plik czcionki W TTF jak sama nazwa funkcji php mowi smile.gif)
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: 1.06.2024 - 02:55