Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]przesylanie obrazka do funkcji
mampolek
post 19.06.2012, 17:56:26
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.12.2009

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


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?



Ten post edytował mampolek 19.06.2012, 17:58:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
greycoffey
post 19.06.2012, 18:08:59
Post #2





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


  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.

Ten post edytował greycoffey 19.06.2012, 18:09:39
Go to the top of the page
+Quote Post
Posio
post 19.06.2012, 18:13:22
Post #3





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


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ć.

Ten post edytował Posio 19.06.2012, 18:14:22
Go to the top of the page
+Quote Post
mampolek
post 19.06.2012, 18:34:03
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.12.2009

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


-----------------------------------

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?

Ten post edytował mampolek 19.06.2012, 18:21:49
Go to the top of the page
+Quote Post
Posio
post 19.06.2012, 21:22:23
Post #5





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


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

Ten post edytował Posio 19.06.2012, 21:24:34
Go to the top of the page
+Quote Post
mampolek
post 19.06.2012, 22:32:14
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.12.2009

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


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
Go to the top of the page
+Quote Post
greycoffey
post 19.06.2012, 22:36:22
Post #7





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Google twoim przyjacielem.
Go to the top of the page
+Quote Post
-Gość-
post 20.06.2012, 10:23:13
Post #8





Goście







a co mam tam wpisac, robie jak na wikibooks i mi nie zwraca zmiennej z funkcji
Go to the top of the page
+Quote Post
Posio
post 20.06.2012, 14:46:45
Post #9





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


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
Go to the top of the page
+Quote Post
memory
post 20.06.2012, 15:17:43
Post #10





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


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.
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: 14.08.2025 - 03:40