Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przesylanie obrazka do funkcji
Forum PHP.pl > Forum > Przedszkole
mampolek
Witam,

Chciałem zrobic sobie funkcje która skaluje zdjecia do okreslonych parametrów (wyciąłem niepotrzebną część kodu):

  1. function oblicz_proporcje($szerokosc_docelowa, $wysokosc_docelowa, $zdjecie)
  2. {
  3. list($szerokosc, $wysokosc) = getimagesize($zdjecie);
  4.  
  5. return $szerokosc;
  6. return $wysokosc;
  7. }


wywołuje funkcje:


  1. oblicz_proporcje("800", "600", $_FILES['plik']['tmp_name']);


i nie wczytuje $_FILES['plik']['tmp_name'], wiec dalej mi skrypt nie chce isc bo brakuje parametrow $szerokosc i $wysokosc Mogłby ktoś wytłumaczyć gdzie robię błąd? przypuszczam że w wprowadzaniu zmiennej $_FILES['plik']['tmp_name'] do funkcji?

ps. zapewne moge obliczyc przed funkcja rozmiar przetwarzanego obrazka i wprowadzic suche liczby do funkcji, ale chcialbym wiedziec czy nie mozna wykonac sposobem ktory probowalem na poczatku?

greycoffey
  1. echo $_FILES['plik']['tmp_name'].' - '.(file_exists($_FILES['plik']['tmp_name'])?'':'nie ').'istnieje';

Sprawdź czy plik istnieje w trakcie wykonywania działania.

WTF? Dwa return? Dojdzie do pierwszego.
Posio
Podrzuce Ci tu funkcje które napisałem gdy zaczynałem swoja przygodę z php... amatorszczyzna ale działa. Dla początkującego czy do analizy, myśle że ci styknie.

2 funkcje, skalują obrazek biącąc pod kryteria szerokość albo wysokość:
  1. //RESIZE IMG//
  2.  
  3. function resizeImgH ($src, $newHeight, $save)
  4. {
  5. if (!is_readable($src)) { return FALSE; }
  6.  
  7. $info = @getimagesize($src);
  8. switch ($info['mime'])
  9. {
  10. case "image/gif":
  11. $src = imagecreatefromgif($src);
  12. break;
  13. case "image/jpeg":
  14. $src = imagecreatefromjpeg($src);
  15. break;
  16. case "image/png":
  17. $src = imagecreatefrompng($src);
  18. break;
  19. }
  20. $old_H = imageSY($src);
  21. $old_W = imageSX($src);
  22.  
  23. $new_H = $newHeight;
  24. $new_W = ($newHeight * $old_W) / $old_H;
  25.  
  26. $th = ImageCreateTrueColor($new_W, $new_H);
  27. imagecopyresampled($th, $src, 0, 0, 0, 0, $new_W, $new_H, $old_W, $old_H);
  28. imagejpeg($th, $save);
  29.  
  30. @imagedestroy($file);
  31. @imagedestroy($th);
  32. return TRUE;
  33. }
  34.  
  35.  
  36. function resizeImgW ($src, $newWidth, $save)
  37. {
  38. if (!is_readable($src)) { return FALSE; }
  39.  
  40. $info = @getimagesize($src);
  41. switch ($info['mime'])
  42. {
  43. case "image/gif":
  44. $src = imagecreatefromgif($src);
  45. break;
  46. case "image/jpeg":
  47. $src = imagecreatefromjpeg($src);
  48. break;
  49. case "image/png":
  50. $src = imagecreatefrompng($src);
  51. break;
  52. }
  53. $old_H = imageSY($src);
  54. $old_W = imageSX($src);
  55.  
  56. $new_H = ($newWidth * $old_H) / $old_W;
  57. $new_W = $newWidth;
  58.  
  59. $th = ImageCreateTrueColor($new_W, $new_H);
  60. imagecopyresampled($th, $src, 0, 0, 0, 0, $new_W, $new_H, $old_W, $old_H);
  61. imagejpeg($th, $save);
  62.  
  63. @imagedestroy($file);
  64. @imagedestroy($th);
  65. return TRUE;
  66. }


Pod $src mozesz oczywiscie wstawic
  1. $_FILES['plik']['tmp_name']
powinno działczyć.
mampolek
-----------------------------------

to jak wywołać obie zmienne?

zrobiłem cos takiego:

  1. function oblicz_proporcje($szerokosc_docelowa, $wysokosc_docelowa, $szerokosc, $wysokosc)
  2. {
  3.  
  4. if($szerokosc > $wysokosc)
  5. {
  6. $nowa_szerokosc = $wysokosc_docelowa;
  7. $nowa_wysokosc = round($wysokosc*($wysokosc_docelowa/$szerokosc));
  8. }
  9.  
  10. if($szerokosc < $wysokosc)
  11. {
  12. $nowa_szerokosc = round($szerokosc*($szerokosc_docelowa/$wysokosc));
  13. $nowa_wysokosc = $szerokosc_docelowa;
  14. }
  15.  
  16. if($szerokosc == $wysokosc)
  17. {
  18. $nowa_szerokosc = $szerokosc_docelowa;
  19. $nowa_wysokosc = $szerokosc_docelowa;
  20. }
  21.  
  22. }



wywoluje poza funkcja $nowa_szerokosc i $nowa_wysokosc i wyrzuca mi ze zmienna nie istnieje... wszystkie parametry ktore wprowadzam do funkcji istnieja

chcialbym teraz przepuscić parametry przez funkcje i otrzymac $nowa_szerokosc i $nowa_wysokosc jak to zrobic?
Posio
zrób tak:

  1. $tablica = array('szerokosc'=>$nowa_szerokosc, 'wysokość'=>$nowa_wysokosc );
  2.  
  3. return $tablica;


i wtedy funkcja zwróci Ci tablice z dwoma wartościami i wyciągasz jak z kazdej tablicy smile.gif
mampolek
zrobiłem tak, i nadal niedziała :/

to cały kod:

  1. function oblicz_proporcje($szerokosc_docelowa, $wysokosc_docelowa, $szerokosc, $wysokosc)
  2. {
  3. if($szerokosc > $wysokosc)
  4. {
  5. $nowa_szerokosc = $szerokosc_docelowa;
  6. $nowa_wysokosc = round($wysokosc*($szerokosc_docelowa/$szerokosc));
  7.  
  8. }
  9.  
  10. if($szerokosc < $wysokosc)
  11. {
  12. $nowa_szerokosc = round($szerokosc*($szerokosc_docelowa/$wysokosc));
  13. $nowa_wysokosc = $szerokosc_docelowa;
  14. }
  15.  
  16. if($szerokosc == $wysokosc)
  17. {
  18. $nowa_szerokosc = $szerokosc_docelowa;
  19. $nowa_wysokosc = $szerokosc_docelowa;
  20. }
  21.  
  22. $tablica = array('szerokosc' => $nowa_szerokosc, 'wysokosc' => $nowa_wysokosc);
  23. return $tablica;
  24. }
  25.  
  26.  
  27. $szerokosc_docelowa = 155;
  28. $wysokosc_docelowa = 55;
  29. $szerokosc = 3155;
  30. $wysokosc = 2155;
  31.  
  32. oblicz_proporcje($szerokosc_docelowa, $wysokosc_docelowa, $szerokosc, $wysokosc);
  33.  
  34. echo $tablica['szerokosc'];



Cytat
Notice: Undefined variable: tablica in C:\xampp\htdocs\proporcjonalne_miniaturki.php on line 41
greycoffey
Google twoim przyjacielem.
Gość
a co mam tam wpisac, robie jak na wikibooks i mi nie zwraca zmiennej z funkcji
Posio
Kolego, jeśli nie potrafisz odczytać tych strasznych dziwnych rzeczy napisanych w tym starożytnym języku którym jest angielski, nie bierz się za php... W kodzie błędu masz opisane WSZYSTKO
memory
Cytat(Posio @ 20.06.2012, 15:46:45 ) *
Kolego, jeśli nie potrafisz odczytać tych strasznych dziwnych rzeczy napisanych w tym starożytnym języku którym jest angielski, nie bierz się za php... W kodzie błędu masz opisane WSZYSTKO


Spokojnie, nie zabierze ci pracy smile.gif

  1. echo $tablica['szerokosc'];
nie ma czegoś takiego, jeżeli napisałeś funkcje to ją wywołaj.
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.