Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmiana rozmiaru przesyłanego obrazku, Upload obrazu
Mephis
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

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


Witam.

Mam sobie taki oto kod:
  1. $uploaddir = "obrazki_profilowe"; //katalog uploadu
  2. $allowed_ext = "jpg, gif, png"; //mozliwe rozszerzenia
  3. $max_size = "20480"; //maksymalna waga
  4. $max_height = "140"; //maksymalna wysokosc
  5. $max_width = "140"; //maksymalna szerokosc
  6.  
  7. $extension = pathinfo($_FILES['file']['name']);
  8. $extension = $extension[extension];
  9. $allowed_paths = explode(", ", $allowed_ext);
  10.  
  11. for($i = 0; $i < count($allowed_paths); $i++) {
  12. if ($allowed_paths[$i] == "$extension")
  13. {
  14. $ok = "1";
  15. }
  16. }
  17.  
  18. //jezeli obraz za duzo wazy
  19. if ($ok == "1") {
  20. if($_FILES['file']['size'] > $max_size)
  21. {
  22. print "zbyt duza waga pliku";
  23. }
  24.  
  25. //jezeli obrazek ma nieprawidowe rozmiary
  26. if ($max_width && $max_height) {
  27. list($width, $height, $type, $w) = getimagesize($_FILES['file']['tmp_name']);
  28. if($width > $max_width || $height > $max_height)
  29. {
  30. print "nieprawidlowe rozmiary obrazu";
  31. }
  32. }
  33.  
  34. //upload
  35. if(is_uploaded_file($_FILES['file']['tmp_name']))
  36. {
  37. move_uploaded_file($_FILES['file']['tmp_name'],$uploaddir.'/'.$_FILES['file']['name']);
  38. }
  39. print "przeslano pomyslnie";
  40. } else {
  41. print "nie wybrano pliku";
  42. }


No i teraz tak. Potrzebuje przeróbki tego kodu tak, aby...
- uploadowany obrazek dopasowywał się do maksymalnej wysokości i szerokości podanej w danych (140x140px), niezależnie od rzeczywistego rozmiaru
- ten sam obrazek ma zrobić sobie jeszcze miniaturę zdjęcia o rozmiarach np. 50x50 i żeby został zapisany z jakimś dodatkiem do nazwy np. "PLIK-mini"

Uprzejmie proszę o pomoc.

Pozwolę sobie na zaktualizowanie wątku.

Póki co nie ma nawet co przerabiać kod, gdyż skrypt z niewiadomych powodów przestał działać...
Oryginalny skrypt: tutaj

Warunki sprawdzają się poprawnie, komunikaty pokazują się kiedy trzeba, ale gdy rzekomo dochodzi już do tego że obraz ma być przesłany na konto ftp, komunikat o poprawnym wysłaniu pliku na serwer się wyświetla się, ale obrazku brak na serwerze brak. Wcześniej działało. Chmody mam ustawione na 777 dla całego katalogu.

Aktualizuję wątek.

Co do powyższego błędu.. cóż, błędu żadnego nie było. Pliki które wysyłałem pojawiły się na FTP dopiero po dłuższym czasie. Ktoś mógłby przypuścić przyczynę?

Powracam do prośby: skalowanie obrazka do maksymalnych rozmiarow podanych w danych, oraz kopia obrazu (miniaturka) o jakiś mniejszych rozmiarach.

Ten post edytował Mephis 22.12.2012, 13:03:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Mephis
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

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


Cóz.. jak mówiłem wcześniej trudne jest dla mnei zastosowanie większych skryptów... Poluję na jakiś prosty.. Znalazłem taki oto skrypt:

  1. <form action="" method="post" enctype="multipart/form-data">
  2. <input name="image" type="file">
  3. <input name="" type="submit">
  4. </form>
  5.  
  6. <?php
  7.  
  8. // >> UPLOAD <<
  9. $plik_tmp = $_FILES['image']['tmp_name'];
  10. $plik_nazwa = $_FILES['image']['name'];
  11.  
  12. $save_file = $plik_nazwa;
  13.  
  14.  
  15. if(is_uploaded_file($plik_tmp)) {
  16. move_uploaded_file($plik_tmp, ''.$save_file.'');
  17. echo "wszystko poszlo ok";
  18.  
  19.  
  20.  
  21. // TWORZENIA ZNAKU WODNEGO
  22. $znak = imagecreatefrompng('watermark.png'); // plik który będzie dodany na obraz 03.jpg
  23. $img = imagecreatefromjpeg($save_file); // plik na który będzie nałożony znak downy czyli plik Obrazek1.png
  24.  
  25. $plik_w = imagesx($img); // szerokość pliku 03.jpg
  26. $plik_h = imagesy($img); // wysokość pliku 03.jpg
  27.  
  28. $znaczek_w = imagesx($znak); // szerokość znaczka Obrazek1.png
  29. $znaczek_h = imagesy($znak); // wysokość znaczka Obrazek1.png
  30.  
  31.  
  32. $od_x = $plik_w - $znaczek_w; // Wyznaczanie położenie w tym przypadku br czyli dolny prawy róg
  33. $od_y = $plik_h - $znaczek_h; // Wyznaczanie położenie w tym przypadku br czyli dolny prawy róg
  34.  
  35.  
  36. imagecopy($img, $znak, $od_x, $od_y, 0, 0, $znaczek_w, $znaczek_h); // Kopiuje i nakłada na obraz znak downy
  37.  
  38.  
  39. imagejpeg($img, $save_file, 80); // Zapisuje gotowy plik, liczba 100 oznacza jakość obrazu można ustawić od 0 do 100
  40.  
  41.  
  42.  
  43.  
  44.  
  45. // TWORZENIE MINIATURKI
  46. $width = imagesx($img);
  47. $height = imagesy($img);
  48.  
  49.  
  50. $width_mini = 250; // szerokosc obrazka
  51. $height_mini = 170; // wysokosc obrazka
  52. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  53.  
  54.  
  55. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  56.  
  57. $min_save_file = 'min-'.$save_file.''; // nazwa miniaturki
  58.  
  59. imagejpeg($img_mini, $min_save_file, 90); // utworzona miniaturka liczba (80) oznacza jakos obrazka od 0 do 100
  60. imagedestroy($img);
  61. imagedestroy($img_mini);
  62. }
  63.  
  64. ?>


..niby jest ok, tzn: obraz jest wgrywany do dobrych rozmiarów, pod podaną nazwą. Tak jak chciałem - tworzy on miniaturkę zdjęcia, też pod inną nazwą... ...niestety jest to kolejny skrypt, który zawodzi, gdyż miniaturka obrazu przesłana na serwer jest wypełniona kolorem czarnym. To 3 skrypt który tak działa. Borykał już się ktoś z podobnym problemem?
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: 15.10.2025 - 02:18