Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Łączenie literowych obrazków w jeden
Forum PHP.pl > Forum > Przedszkole
Xadrian
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.
thek
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
Xadrian
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.
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.