Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Łączenie literowych obrazków w jeden
Xadrian
post 28.06.2010, 20:36:32
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.06.2010

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


Witam wszystkich,

Pisząc skrypt, który ma połączyć literki zapisane w obrazku, napotkałem się z małym problemem. Mianowicie zwracany jest nie istniejący obrazek, a dokładniej jego ikonka. Podaję Wam napisany przeze mnie skrypt, i proszę o komentarze co jest nie tak.

  1. <?php
  2. function getLetterFile($letter)
  3. {
  4. if($letter == " ")
  5. {
  6. return "letters/empty.bmp";
  7. }
  8. if(preg_match('/[^A-Z]/', $letter))
  9. {
  10. return "letters/".strtolower($letter)."m.bmp";
  11. }
  12. elseif(preg_match('/[^a-z]/', $letter))
  13. {
  14. return "letters/".strtolower($letter)."d.bmp";
  15. }
  16. elseif(preg_match('/[^0-9]/', $letter)){
  17. return "letters/".$letter.".bmp";
  18. }
  19. else
  20. {
  21. echo "2";
  22. return false;
  23. }
  24. }
  25.  
  26. // Przygotowanie zmiennych do pętli
  27. $split = str_split($text);
  28. $y = (count($split) - 1);
  29. $width = 0;
  30. $imagesize = getimagesize(getLetterFile($split[$x]));
  31.  
  32. // Ustalanie całkowitej szerokości obrazu
  33. for($x = 0; $x <= $y; $x++){
  34. $width = $width + $imagesize[0];
  35. }
  36.  
  37. // Tworzenie obrazu o ustalonych rozmiarach
  38. $image = imagecreate($width, 13);
  39.  
  40. // Zerowanie zmiennej z końcem obrazu po ostatniej literze
  41. $curWidth = 0;
  42.  
  43. // Łączenie obrazków w całość
  44. for($z = 0; $x <= $y; $z++)
  45. {
  46. $output = imagecopymerge($image, getLetterFile($split[$z]), $curWidth, 0, 0, 0, $imagesize[0] , $imagesize[1] , 0);
  47. }
  48.  
  49. // Wyświetlanie obrazka i czyszczenie pamięci
  50. header('Content-Type: image/gif');
  51. imagegif($output);
  52.  
  53. imagedestroy($output);
  54. ?>


Dodam tylko, że getLetterFile($letter) działa bez problemu, również pierwsza pętla zwraca właściwą szerokość.

Liczę na pomoc i pozdrawiam,
Xadrian.
Go to the top of the page
+Quote Post
thek
post 28.06.2010, 21:49:46
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Popatrz co robisz z obrazkiem przy łączeniu w każdym kroku, a dojdziesz co nie gra. Wlaściwie to zacząłbym od sprawdzenia czym iterujesz winksmiley.jpg
for($z = 0; $x <= $y; $z++)
Startujesz od $z=0 co krok zwiększasz $z o 1 i robisz to tak długo aż $x jest mniejsza równa $y... Widzisz problem czy nie? winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Xadrian
post 28.06.2010, 22:57:51
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 28.06.2010

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


Cytat(thek @ 28.06.2010, 22:49:46 ) *
Popatrz co robisz z obrazkiem przy łączeniu w każdym kroku, a dojdziesz co nie gra. Wlaściwie to zacząłbym od sprawdzenia czym iterujesz winksmiley.jpg
for($z = 0; $x <= $y; $z++)
Startujesz od $z=0 co krok zwiększasz $z o 1 i robisz to tak długo aż $x jest mniejsza równa $y... Widzisz problem czy nie? winksmiley.jpg


Copy&paste no more!

Nawet po poprawieniu nie działa. Dalej zwraca to samo.

edit: znalazłem jeszcze jeden błąd, w którym beztrosko wyciągnąłem z pętli:
$imagesize = getimagesize(getLetterFile($split[$x]));
zapominając o użytym tam $x.

Ten post edytował Xadrian 28.06.2010, 23:05:23
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: 19.07.2025 - 01:36