Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php5][GD] zmiana rozmiaru obrazków - wyświetla tylko jeden
bart_pl
post 29.06.2009, 16:13:53
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 19.05.2005

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


Witam,

napisałem taką oto funkcję wykorzystującą GD do zmiany rozmiaru obrazka oraz do wyświetlenia ramki:
  1. <?php
  2. function resize($zdjecie)
  3. {
  4. $img = imagecreatefromjpeg($zdjecie);
  5. $size = getimagesize($zdjecie);
  6. $width = 140;
  7. $height = $size[1] * $width/$size[0];
  8. if ($height>105) {
  9. $height = 105;
  10. $width = $size[0] * $height/$size[1];
  11. }
  12. $im = imagecreatetruecolor($width,$height);
  13. imagecopyresampled($im, $img, 0, 0, 0, 0, $width, $height, imagesx($img), imagesy($img));
  14. $destinationSize  =  array(imagesx($im)+6, imagesy($im)+6);
  15. $destination = imagecreatetruecolor($destinationSize[0],$destinationSize[1]);
  16. $white = imagecolorallocate($destination, 255, 255, 255);
  17. $border = imagecolorallocate($destination, 59, 70, 77);
  18. $rog = imagecolorallocate($destination, 58, 68, 76);
  19. imagefill($destination, 0, 0, $white);
  20.  
  21. imagecopyresampled($destination, $im, 3, 3, 0, 0, imagesx($im),imagesy($im),imagesx($im),imagesy($im));
  22.  
  23. //top
  24. imageline($destination, 1,0, $destinationSize[0]-2,0, $border);
  25. imagesetpixel($destination, 0,0, $rog);
  26. //lewa
  27. imageline($destination, 0,1,0,$destinationSize[1]-2, $border);
  28. imagesetpixel($destination, 0,$destinationSize[1]-1, $rog);
  29. //prawa
  30. imageline($destination, $destinationSize[0]-1,1,$destinationSize[0]-1,$destinationSize[1]-2, $border);
  31. imagesetpixel($destination, $destinationSize[0]-1,$destinationSize[1]-1, $rog);
  32. //bottom
  33. imageline($destination, 1,$destinationSize[1]-1, $destinationSize[0]-2,$destinationSize[1]-1, $border);
  34. imagesetpixel($destination, $destinationSize[0]-1,0, $rog);
  35.  
  36. header('Content-Type: image/jpeg');
  37.  
  38. imagejpeg($destination);
  39. }
  40. resize("tlo.jpg");
  41. resize("morze.jpg");
  42. resize("morze2.jpg");
  43. ?>


Problem polega na tym, że nie mogę wyświetlić 3 obrazków na raz, bo kod wykona się takjakby raz dla jednego obrazka i na tym poprzestaje... Czy ktoś ma jakiś pomysł jak to naprawić, ewentualnie jak usprawnić skrypt? Do ImageMagick nie mam dostępu...
Go to the top of the page
+Quote Post
Pawel_W
post 29.06.2009, 17:10:20
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


a myślałeś że co? zrobi ci 3 obrazki 1 pod drugim?
dodaj do funkcji imagejpeg drugi parametr,wtedy ci zapisze te obrazki
Go to the top of the page
+Quote Post
korro
post 29.06.2009, 17:57:55
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 42
Dołączył: 8.04.2005
Skąd: Mława

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


Witam.
Albo zakoduj to w base64 i wyświetlaj obrazki inline.
Przykład:
  1. <img src="data:image/jpeg;base64,[tu zakodowany obrazek w base64]">


Ten post edytował korro 29.06.2009, 18:03:25


--------------------
Go to the top of the page
+Quote Post
erix
post 29.06.2009, 18:12:08
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Fajnie, że to w starszych przeglądarkach zadziała. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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 - 06:24