Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zapisywanie obrazka i zatrzymanie pętli while
Forum PHP.pl > Forum > Przedszkole
maksik
W pętli while mam skrypt który z linku obrazka.jpg sklauje go i zapisuje na serwer

  1. $link= 'http://upload.wikimedia.org/wikipedia/commons/e/ee/Mango_and_cross_section_edit.jpg';
  2. $imagetam ='nazwa.jpg';
  3.  
  4. $ch = curl_init($link);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6. file_put_contents($imagetam ,curl_exec($ch));
  7.  
  8.  
  9. function zmiana_rozmiaru($orginalny_obrazek,$docelowa_szerokosc,$docelowa_wysokosc){
  10.  
  11. // Pobranie parametrów
  12. list($szerokosc, $wysokosc) = getimagesize($orginalny_obrazek);
  13. $xskala=$szerokosc/$docelowa_szerokosc;
  14. $yskala=$wysokosc/$docelowa_wysokosc;
  15.  
  16. // Kalkulacja
  17. if ($yskala>$xskala){
  18. $nowa_szerokosc = round($szerokosc * (1/$yskala));
  19. $nowa_wysokosc = round($wysokosc * (1/$yskala));
  20. }
  21. else {
  22. $nowa_szerokosc = round($szerokosc * (1/$xskala));
  23. $nowa_wysokosc = round($wysokosc * (1/$xskala));
  24. }
  25.  
  26. // Zmiana rozmiaru
  27. $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  28. $obrazek_tymczasowy = imagecreatefromjpeg ($orginalny_obrazek);
  29. imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  30.  
  31. return $obraz_zmiana_wielkosci;
  32. }
  33.  
  34. $obraz_zmiana_wielkosci = zmiana_rozmiaru($imagetam, '228', '228');
  35.  
  36. header('Content-Type: image/jpeg');
  37.  
  38. //zapisywanie zdjecia
  39. imagejpeg($obraz_zmiana_wielkosci,'nowy_folder/'.$imagetam.'');
  40.  
  41. unlink($imagetam);



Problem w tym że podczas uruchomienia pojawia się komunikat "obrazek nie może zostać otworzony poniewaz zawiera błędy" co zatrzymuje pętle, a musi ona obsłużyć jeszcze inne obrazki, obrazek mimo komunikatu oczywiscie się zapisuje w folderze co można zrobić by pętla się nie zatrzymywała?
SmokAnalog
Uwagi, które mam do Twojego kodu:
  1. Po co tworzysz plik nazwa.jpg tylko po to, żeby za chwilę go usunąć? Możesz operować bezpośrednio na źródle obrazka
  2. Pierwsze 6 linii można zastąpić jedną instrukcją copy.
  3. Linie 13-24 można znacznie skrócić:
    1. $skala = min($docelowa_szerokosc / $szerokosc, $docelowa_wysokosc / $wysokosc);
    2. $nowa_szerokosc = round($szerokosc * $skala);
    3. $nowa_wysokosc = round($wysokosc * skala);
  4. W PHP jest coś takiego jak liczba, po co apostrofy przy przekazywaniu wymiarów w linii 34.?
  5. Po co ustawiasz Content-type, skoro tylko zapisujesz do pliku?
  6. Po co dodajesz .'' na końcu stringa? Nie pierwszy raz zdaje się.

Na razie tyle, póki co za dużo śmieci tu żeby zacząć się zastanawiać czemu nie działa.
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.