Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Brak polskich znaków na obrazku
KR2615
post 30.06.2016, 15:55:04
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

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


Witam
Stworzyłem sobie funkcje która ma mi przygotować obrazek z podpisem. Niestety zamiast polskich znaków mam krzaczki. Próbowałem wielu rozwiązań a mianowicie:

1. Użyłem iconv żeby skonwertować stringa.
2. Sprawdziłem kodowanie baz danych, na wszelki wypadek zrobiłem ALTER DATABASE, ALTER TABLE i SET names UTF-8 zaraz po połączeniu.
3. Wywołałem funkcję z parametrami "z ręki" tj. przygotuj_obrazek(żęćźłó); zamiast danych pobranych z mySQLa.
4. Sprawdziłem kodowanie plików .php i na obu (głównym oraz includowanym) jest UTF-8 bez DOM.

Co jeszcze mogę robić nie tak? Proszę Was o pomoc!


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Pyton_000
post 30.06.2016, 16:39:52
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


pokazać kod. Może czcionka nie obsługuje ogonków smile.gif
Go to the top of the page
+Quote Post
KR2615
post 1.07.2016, 11:02:30
Post #3





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

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


Trochę przydługawa ta funkcja ale nieco ją uproszczę
  1. <?php
  2. include("/var/www/inc.php");
  3. dbconn();
  4.  
  5. function przybotuj_obrazek($sender, $title, $iban, $value = "400,00", $odbiorca = "Nazwa") {
  6.  
  7. header("Content-type: image/png");
  8. $font = SITEPATH.'courbd.ttf';
  9. $image = imagecreatefrompng(SITEPATH.'/images/przelew-form.png');
  10. $color = imagecolorallocate($image, 0, 0, 0); // czarny
  11. //Pozycje kolejnych wierszy w pikselach
  12. $l1=46;$l2=91;$l3=135;$l4=179;$l5=227;$l6=272;$l7=317;$l8=362;$l9=407;
  13.  
  14. // Pierwsze dwie linijki - $odbiorca (max 27 znaków)
  15. $char=0;
  16. while($char < 27) {
  17. imagettftext($image, 20, 0, 367+26*$char, $l1, $color, $font, $odbiorca[$char]);
  18. $char++;
  19. }
  20. if(strlen($odbiorca) > 27) {
  21. $char=0;
  22. while($char < 27) {
  23. imagettftext($image, 20, 0, 367+26*$char, $l2, $color, $font, $odbiorca[$char+27]);
  24. $char++;
  25. }
  26. }
  27.  
  28. //dalsze umieszczanie tekstu w analogiczny sposób
  29.  
  30. //Finalne pokazanie obrazka
  31. imagepng($image,NULL,9);
  32. imagedestroy($image);
  33.  
  34. }
  35. ?>


--------------------
Go to the top of the page
+Quote Post
trueblue
post 1.07.2016, 11:18:25
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Ustaw wewnętrzne kodowanie na UTF-8.
Znaki wycinaj za pomocą: http://php.net/manual/en/function.mb-substr.php, nie odwołując się do stringa jak do tablicy.
Podobnie licz długość stringu - z pomocą funkcji z tej rodziny.


--------------------
Go to the top of the page
+Quote Post
KR2615
post 1.07.2016, 11:39:31
Post #5





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

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


Użycie mb_substr pomogło. Dzięki wielkie! 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: 14.08.2025 - 08:37