Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis kilkunastu zdjęć z kamerek internetowych na server
Forum PHP.pl > Forum > PHP
slawekxx
Witam , mam taki mały skrypt do zapisu zdjęć z kamerek internetowych
  1. $strSrc = file_get_contents('http://users.otenet.gr/~vyncenzo/vodas/para5.jpg');
  2. $data = date("d-m-Y H:i");
  3. $nazwa_pliku = $data ;
  4. $gdobj = imagecreatefromstring($strSrc);
  5. imagepng($gdobj);
  6. $strDest = ob_get_contents();
  7.  
  8. // obraz wynikowy jest gotowy
  9. file_put_contents("$nazwa_pliku.jpg", $strDest);
  10.  
  11. //tworzenie miniatur
  12. $min_nazwa_pliku=date("d-m-Y H:i").'.jpg';
  13. include('SimpleImage.php');
  14. $image = new SimpleImage();
  15. $image->load('http://users.otenet.gr/~vyncenzo/vodas/para5.jpg');
  16. $image->resize(180,121);
  17. $image->save('min/'.$min_nazwa_pliku);
  18.  
ale teraz mam problem bo zapisuje tylko jedno zdjęcie a adresowych, które mnie interesują jest 20 jak mam zmodyfikować ten skrypt ?
Przem4S
Wydaje mi się że tworzenie powinno być w pętli, a adresy które Cię interesują powinny być w tablicy.
Np coś takiego:
  1. // Tablica z adresami zdjęć z kamerek (url'e przykładowe)
  2. $kamerki = array(
  3. 'http://users.otenet.gr/~vyncenzo/vodas/para5.jpg', 'http://users.otenet.gr/~vyncenzo/vodas/para6.jpg', 'http://users.otenet.gr/~vyncenzo/vodas/para7.jpg', 'http://users.otenet.gr/~vyncenzo/vodas/para8.jpg', 'http://users.otenet.gr/~vyncenzo/vodas/para9.jpg', 'http://users.otenet.gr/~vyncenzo/vodas/para10.jpg'
  4. );
  5. // Zliczenie ilości adresów
  6. $n = count($kamerki);
  7.  
  8. for($i=0;$i<$n;$i++)
  9. {
  10. $strSrc = file_get_contents($kamerki[$i]);
  11. $data = date("d-m-Y H:i");
  12. $nazwa_pliku = $data ;
  13. $gdobj = imagecreatefromstring($strSrc);
  14. imagepng($gdobj);
  15. $strDest = ob_get_contents();
  16.  
  17. // obraz wynikowy jest gotowy
  18. file_put_contents("$nazwa_pliku._$i.jpg", $strDest);
  19.  
  20. //tworzenie miniatur
  21. $min_nazwa_pliku=date("d-m-Y H:i").'.jpg';
  22. include('SimpleImage.php');
  23. $image = new SimpleImage();
  24. $image->load($kamerki[$i]);
  25. $image->resize(180,121);
  26. $image->save('min/'.$min_nazwa_pliku);
  27. }
slawekxx
w pętli tworzy mi się tylko jedno zdjęcie plik ! na stronie pisze błąd serwera nie można załadować strony
Przem4S
No jak użyłeś szywcem mojego przykładu to tak gdyż urle dałem tylko przykładowe (więc zapewne są "not found" tongue.gif), zapisuje tylko jeden plik gdyż jako nazwe podałeś datę, do niej należy podać parametr '_'.$i wtedy zapisze kilka zdjęć
np:
17_11_2012_13_10_1.jpg
17_11_2012_13_10_2.jpg
17_11_2012_13_10_3.jpg
itd..

Musi zapisywać z tym parametrem bo inaczej zdjęcia się nadpisują i pozostaje tylko to ostatnie.
slawekxx
ok poprawiłem
  1. $kamerki=array("http://www.in-karystos.gr/camera/rafina.jpg",
  2. "http://www.in-karystos.gr/camera/current.jpg",
  3. "http://streaming.syzefxis.gov.gr/images/current.jpg",
  4. "http://users.otenet.gr/~vyncenzo/vodas/para5.jpg",
  5. "http://users.otenet.gr/~epigeo/parga.jpg");
  6.  
  7. // Zliczenie ilości adresów
  8. $n = count($kamerki);
  9.  
  10. for($i=0;$i<$n;$i++)
  11. {
  12. $strSrc = file_get_contents($kamerki[$i]);
  13. $data = date("d-m-Y H:i");
  14. $nazwa_pliku = $data .'_'.$i ;
  15. $gdobj = imagecreatefromstring($strSrc);
  16. imagepng($gdobj);
  17. $strDest = ob_get_contents();
  18.  
  19. // obraz wynikowy jest gotowy
  20. file_put_contents("$nazwa_pliku._$i.jpg", $strDest);
  21.  
  22. //tworzenie miniatur
  23. $min_nazwa_pliku=date("d-m-Y H:i").'_'.$i.'.jpg';
  24. include('SimpleImage.php');
  25. $image = new SimpleImage();
  26. $image->load($kamerki[$i]);
  27. $image->resize(180,121);
  28. $image->save('min/'.$min_nazwa_pliku);
  29. }

Przem4S
Wypisz sobie jakiś tekst w pętli i zobacz ile razy pętla przeszła, np dodaj coś takiego
  1. $kamerki=array("http://www.in-karystos.gr/camera/rafina.jpg",
  2. "http://www.in-karystos.gr/camera/current.jpg",
  3. "http://streaming.syzefxis.gov.gr/images/current.jpg",
  4. "http://users.otenet.gr/~vyncenzo/vodas/para5.jpg",
  5. "http://users.otenet.gr/~epigeo/parga.jpg");
  6.  
  7. // Zliczenie ilości adresów
  8. $n = count($kamerki);
  9.  
  10. for($i=0;$i<$n;$i++)
  11. {
  12. // obieg pętli
  13. echo "Obieg pętli nr.$i";
  14.  
  15.  
  16. $strSrc = file_get_contents($kamerki[$i]);
  17. $data = date("d-m-Y H:i");
  18. $nazwa_pliku = $data .'_'.$i ;
  19. $gdobj = imagecreatefromstring($strSrc);
  20. imagepng($gdobj);
  21. $strDest = ob_get_contents();
  22.  
  23. // obraz wynikowy jest gotowy
  24. file_put_contents("$nazwa_pliku._$i.jpg", $strDest);
  25.  
  26. //tworzenie miniatur
  27. $min_nazwa_pliku=date("d-m-Y H:i").'_'.$i.'.jpg';
  28. include('SimpleImage.php');
  29. $image = new SimpleImage();
  30. $image->load($kamerki[$i]);
  31. $image->resize(180,121);
  32. $image->save('min/'.$min_nazwa_pliku);
  33. }


Konkretnie linia 12/13.
I zobacz co Ci się zwróci na stronie.
slawekxx
ok znalazłem przyczynę i kolejny problem parę linijek do tworzenia miniatur jest za to odpowiedzialne jak je usunę działa prawidłowo , i teraz nie wiem jak to rozwiązać żeby również tworzyły się miniaturki
Przem4S
Zapewne możesz trochę to skrócić wyciągająć z pętli takie rzeczy jak includowanie pliku, tworzenie obiektu z klasy, gdyż przy każdej pętli one się powtarzają co może prowadzić do błędu.
Czyli spróbuj dać przed instrukcją for :
include('SimpleImage.php');
$image = new SimpleImage();

a w instrukcji for to usuń.
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.