Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przerobienie fukncji
Forum PHP.pl > Forum > Przedszkole
microh
Jak mogę przerobić tę funkcję, lub z jakim parametrem ja wywołać aby zmniejszone obrazki zapisywały sie w katalogu obrazki/

Dotychczas probowałem:
  1. <?php
  2. $elo = resizeImage($_POST['miniaturka'],130,97,'obrazki/'.$kod);
  3. ?>


ale to dawalo tylko błąd.

Proszę o instrukcje, oto wspomniana funkcja:

  1. <?php
  2. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 97)
  3. {
  4.  /*
  5. * source - obrazek jpeg
  6. * max_x - maksymalna szerokosc pomniejszonego obrazka
  7. * max_y - maksymalna dlugosc pomniejszonego obrazka
  8. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  9. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  10. */
  11.  
  12. if(imgType($source) == 'IMAGETYPE_JPEG')
  13. {
  14.  $img_src = imagecreatefromjpeg($source);
  15. }
  16. elseif(imgType($source) == 'IMAGETYPE_GIF')
  17. {
  18.  $img_src = imagecreatefromgif($source);
  19. }
  20. elseif(imgType($source) == 'IMAGETYPE_PNG')
  21. {
  22.  $img_src = imagecreatefrompng($source);
  23. }
  24. else
  25. {
  26.  die('Błąd!! Akceptowane typy obrazków to: JPG/JPEG, GIF, PNG');
  27. }
  28.  
  29.  $image_x = imagesx($img_src);
  30.  $image_y = imagesy($img_src);
  31.  if($image_x > $image_y) // Landscape
  32.  {
  33. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  34. $ratio_y = $ratio_x;
  35. $move = 'y';
  36.  }
  37.  else // Portrait
  38.  {
  39. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  40. $ratio_x = $ratio_y;
  41. $move = 'x';
  42.  }
  43. $new_x = $image_x*$ratio_x;
  44. $new_y = $image_y*$ratio_y;
  45.  
  46. $move_x = ($move == 'x') ? ($max_x-$new_x)/: 0;
  47. $move_y = ($move == 'y') ? ($max_y-$new_y)/: 0;
  48.  
  49. $new_img = imagecreatetruecolor($max_x, $max_y);
  50. $background = imagecolorallocate($new_img, 255, 255, 255);
  51. imagefill($new_img, 0, 0, $background);
  52. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  53.  
  54. if(imgType($save_image) == 'IMAGETYPE_JPEG')
  55. {
  56.  imagejpeg($new_img, $save_image, 100);
  57. }
  58. elseif(imgType($save_image) == 'IMAGETYPE_GIF')
  59. {
  60.  imagegif($new_img,$save_image);
  61. }
  62. elseif(imgType($save_image) == 'IMAGETYPE_PNG')
  63. {
  64.  imagepng($new_img, $save_image);
  65. }
  66.  
  67. }
  68. ?>
porady-it.pl
Wiesz ten fragment kodu to troszkę za mało. Rozumiem że w $_POST[miniaturka] przechowujesz nazwę miniaturki która znajduje się w tym samym katalogu co skrypt. Jeśli byś mógł to zamieść także jaki błąd się generuje.
Cezar708
Pierwszym parametrem powinna być ścieżka do pliku, który chcesz przerobić
Cytat(microh @ 26.10.2007, 07:53:21 ) *
  1. <?php
  2. $elo = resizeImage($_POST['miniaturka'],130,97,'obrazki/'.$kod);
  3. ?>

nie wiem tego na pewno, ale na 90% jestem przekonany, że w $_POST['miniaturka'] nie przekazujesz ścieżki do pliku. Ścieżka musi być do pliku, który znajduje się na serwerze.

Innym problemem, jeśli używasz linuksa może być nie ustawienie praw zapisu do serwera do katalogu `obrazki`, możesz zmienić prawa na np 0777 i sprawdź czy zadziała.

Jeśli to nie pomoże to napisz jaki błąd Ci wyskakuje.
microh
w $_POST['miniaturka'] znajduje się link do obrazka.

Całośc dziala dobrze, obrazki się generują, ale jeśli chce zmienic folder, gdzie są zapisywane poprzez zmiane:

z

  1. <?php
  2. $elo = resizeImage($_POST['miniaturka'],130,97,$kod);
  3. ?>


na:

  1. <?php
  2. $elo = resizeImage($_POST['miniaturka'],130,97,'./obrazki/'.$kod);
  3. ?>


Wywala:

Warning: imagegif(): supplied argument is not a valid Image resource in /home/accounts_m/micro15/public_html/skifa/funkcje.php on line 338

w te linii znajduje się:
  1. <?php
  2. imagegif($new_img,$save_image);
  3. ?>


dry.gif
Pomocy?
Berkovits
Sprobuj w miejscu
  1. <?php
  2. obrazki/.$kod
  3. ?>

wstawic reczne wartosc $kod (tymczasowo, na czas debugowania). Byc moze masz np. $kod='/costam'. Wtedy do Twej funkcji bys przekazywal wartosc: 'obrazki//costam'. Jednak samo
  1. <?php
  2. '/costam'
  3. ?>

jest poprawne.
Byc moze tak sie u Ciebie dzieje.
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.