Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]zapisywanie obrazka i zatrzymanie pętli while
maksik
post
Post #1





Grupa: Zarejestrowani
Postów: 206
Pomógł: 0
Dołączył: 26.09.2012

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


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?

Ten post edytował maksik 2.08.2014, 11:43:29
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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.

Ten post edytował SmokAnalog 2.08.2014, 11:56:00
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 Aktualny czas: 20.08.2025 - 10:00