Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wymuszenie pobierania biblioteka GD
Olsz4k
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 26.07.2013
Skąd: Kraków

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


Stworzyłem sobie skalowanie zdjęcia + nakładanie na niego znaku wodnego, jednak po kliknięciu "wyślij" chciałbym aby wyskakiwało automatyczne pobieranie. Dzieje się tak, jednak nowo pobrana miniaturka ze znakiem się nie wyświetla (czarny kwadrat), więc coś jest pewnie nie tak.
Kodowanie UTF-8 bez BOM ustawione.

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2.  
  3.  
  4. <form action="" method="post" enctype="multipart/form-data">
  5. <input name="image" type="file">
  6. <input name="" type="submit">
  7. </form>
  8.  
  9. <?php
  10.  
  11. $plik_tmp = $_FILES['image']['tmp_name'];
  12. $plik_nazwa = $_FILES['image']['name'];
  13. $save_file = $plik_nazwa;
  14.  
  15.  
  16. if(is_uploaded_file($plik_tmp)) {
  17. move_uploaded_file($plik_tmp, ''.$save_file.'');
  18. $znak = imagecreatefrompng('img/znak.png');
  19.  
  20.  
  21.  
  22.  
  23. $img = imagecreatefromjpeg(''.$save_file.'');
  24.  
  25. $width = imagesx($img);
  26. $height = imagesy($img);
  27. $znak_w = imagesx($znak);
  28. $znak_h = imagesy($znak);
  29. $proporcje = $height / $width;
  30. $szerokosc = 600;
  31. $wysokosc = $szerokosc * $proporcje;
  32.  
  33.  
  34.  
  35. $img_mini = imagecreatetruecolor($szerokosc, $wysokosc);
  36. header('Content-type: image/jpeg');
  37. header('Content-Type: application/octet-stream');
  38. header('Content-Disposition: attachment; filename="'.$plik_nazwa.'"');
  39. header('Content-Transfer-Encoding: binary');
  40. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $szerokosc , $wysokosc, $width , $height);
  41.  
  42. imagecopy($img_mini, $znak, 0, 10, 0, 0, $znak_w, $znak_h);
  43.  
  44. imagejpeg($img_mini, "", 100);
  45.  
  46. unlink($save_file);
  47. }
  48. ?>
  49.  


I jeszcze jedno. Jak do tego dorzucić pętlę, aby można było dodać kilkanaście/kilkadziesiąt zdjęć "na raz" i żeby po kliknięciu pobrało je wszystkie? Jest coś takiego możliwe?
Z góry dzięki za pomoc! (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





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

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


Masz dwa błędy:
  1. W linii 44. drugi parametr imagejpeg nie może być pustym stringiem. Ta linijka wywala błąd, tylko nie widzisz go, bo masz ustawiony Content-type: image/jpeg. Zmień ten pusty string na null:
    1. imagejpeg($img_mini, null, 100);

    Dokumentacja imagejpeg też o tym mówi:
    Cytat
    The path to save the file to. If not set or NULL, the raw image stream will be outputted directly.

    To skip this argument in order to provide the quality parameter, use NULL.

  2. Kod HTML formularza dostaje się do kodu obrazka, bo nie jest w żadnej instrukcji warunkowej. Najlepiej umieść formularz i jego akcję w osobnych plikach, będzie czytelniej. A jeśli koniecznie w jednym, to formularz powinien być wyświetlany tylko wtedy, kiedy is_uploaded_file zwraca false.


Ten post edytował SmokAnalog 31.07.2014, 02:20:36
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 12:53