Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] skrypt robiący miniatury, mam, ale nie działa
Neojawor
post 27.11.2006, 21:42:31
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

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


Mam skrypt, który najpierw robi upload pliku, a później zmniejsza go i nadpisuje. Coś niestety nie działa:
  1. <?php
  2. // ------- ładowanie pliku pliku
  3. $typ=getimagesize($_FILES['fota']['tmp_name']);
  4. if ($_FILES['fota']['type'] =='image/jpeg' || $_FILES['fota']['type'] == "image/png")
  5. {
  6.  $nazwa_pliku = "zdjecia/" . $_FILES['fota']['name'] ; 
  7.  $rozmiar = $_FILES['fota']['size'] / 1024;
  8.  // skrypt kopiujący plik na serwer
  9.  if(is_uploaded_file( $_FILES['fota']['tmp_name'] ) )
  10.  {
  11. if( move_uploaded_file( $_FILES['fota']['tmp_name'], $nazwa_pliku ) )
  12. {
  13.  // -------------------definicja funkcji do zmiany rozmiaru pliku
  14.  function image_resize($docelowy, $stary_plik, $max_x, $max_y)
  15.  {
  16. //funkcja zmniejsza zdjęcie proporcjonalnie, a oto parametry
  17. //$docelowy - ścieżka docelowego pliku
  18. //$stary_plik - ścieżka pliku źródłowego
  19. //$max_x - maksymalna szerokość zdjęcia
  20. //$max_y - maksymalna wysokość zdjęcia
  21. if($_FILES['fota']['type'] =='image/jpeg' )
  22. {
  23.  $plik=imagecreatefromjpeg($stary_plik);
  24. }
  25. elseif($_FILES['fota']['type'] == "image/png")
  26. {
  27.  $plik=imagecreatefrompng($stary_plik);
  28. }
  29. else
  30. {
  31.  die('Zly typ pliku, akceptowalne typy to: JPG/JPEG, PNG');
  32. }
  33. $stary_x=imagesx($plik);
  34. $stary_y=imagesy($plik);
  35. if($stary_x>$stary_y)
  36. {
  37.  $proporcje=$max_x / $stary_x;
  38. }
  39. else
  40. {
  41.  $proporcje=$max_y / $stary_y;
  42. }
  43. if($proporcje<1)
  44. {
  45.  $nowy_x=$stary_x * $proporcje;
  46.  $nowy_y=$stary_y * $proporcje;
  47.  $nowy_plik= imagecreatetruecolor($nowy_x, $nowy_y);
  48.  imagecopyresampled($nowy_plik, $plik, 0, 0, 0, 0, $nowy_x, $nowy_y, $stary_x, $stary_y);
  49. }
  50. if($_FILES['fota']['type'] =='image/jpeg' )
  51.  imagejpeg($nowy_plik, $docelowy, 96);
  52. else
  53.  imagejpeg($stary_plik, $docelowy, 96);
  54.  }//koniec funkcji image_resize
  55.  
  56.  $docelowy="zdjecia/" . $_FILES['fota']['name'];
  57.  image_resize($docelowy, $nazwa_pliku, 700, 700);
  58.  echo '<h3>Plik został załadowany!</h3><br />';
  59. }
  60. else
  61.  echo 'Upload pliku nie powiódł się!';
  62.  }
  63.  else
  64.  {
  65. echo 'Wystąpił błąd podczas wysyłania pliku na serwer!n';
  66. echo 'Proszę sprawdzić, czy plik nie przekracza rozmiaru 1MB';
  67.  }
  68. }
  69. else
  70.  echo "Wybrany plik ma niepoprawne rozszerzenie. Dodać można tylko obrazy typu jpg/jpeg i png<br>";
  71. echo $nowy_x . " x " . $nowy_y;
  72. ?>

ostatnia linijka służyła do sprawdzenia jakie są wartości nowych rozmiarów pliku. Niestety wygląda na to, że te zmienne nie mają żadnych wartości, bo nic się nie wyświetla.
Dodam, nie wyświetla się żaden błąd. Skrypt przechodzi bez problemu, ale plik na serwerze się nie pojawia
Go to the top of the page
+Quote Post
jarrod
post 27.11.2006, 22:15:10
Post #2





Grupa: Zarejestrowani
Postów: 312
Pomógł: 9
Dołączył: 14.10.2006
Skąd: warszawa

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


od końca:
te zmienne nie są widoczne poza ciałem funkcji!

po co w ogóle ta funkcja skoro chowasz ją za tyloma IF-ami. Trochę bez sensu.

Dwa razy sprawdzasz typ pliku.

Czy sprawdziłeś czy ta funkcja w ogóle się wykonuje? Jeśli tak to jakie warunki są spełnione w tej funkcji?
Go to the top of the page
+Quote Post
Neojawor
post 28.11.2006, 11:09:56
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

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


Dzięki jarrod za dawkę logicznego myślenia. Okazuje się że skrypt działa. Wczoraj byłem zbyt już zmęczony żeby zaóważyć błąd. Na końcu skryptu dałem skrypt javy, który miał mnie przenosić do nowo utworzonego pliku. Tam po prostu podawałem złą ścieżkę i wyświetlało, że brak pliku, mimo że plik tam jest.
Co do zmiennych, to faktycznie są widoczne tylko wewnątrz mojej funkcji (tu brak wyedukowania się kłania).

Mam jednak pytanie - ja najpierw ładuję plik na serwer, a później dopiero zmniejszam, czy nie dałoby się pominąć uploadu, tzn zrobić zaczep do pliku przekazanego przez formularz, zmniejszyć go i dopiero wtedy zapisać na serwer?
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: 18.07.2025 - 16:45