Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Tworzenie miniaturki w locie przy uploadzie zdjęcia, Pomoc w modyfikacji skryptu
grattz
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Pierwszy raz modyfikuje gotowy skrypt i nie daje sobie rady.
Chce aby przy uploadowaniu zdjęcia na serwer tworzyła sie w locie miniaturka tegoż zdjęcia.
Dane wyjściowe:
Katalog na serwerze .../portal2006/uploads/
Nazwy plików zapisywanych na serwerze .$id.$_FILES['Plik']['name']

Jak zmodyfikować ten kod zeby sprzęrzyć te dane ?
  1. <?php
  2. // definicja funkcji robiącej miniaturę zdjęcia
  3. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality)
  4. {
  5.  /*
  6. * source - obrazek jpeg
  7. * max_x - maksymalna szerokosc pomniejszonego obrazka
  8. * max_y - maksymalna dlugosc pomniejszonego obrazka
  9. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  10. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  11. */
  12.  
  13. if(exif_imagetype($source) == IMAGETYPE_JPEG)
  14. {
  15.  $img_src = imagecreatefromjpeg($source);
  16. }
  17. elseif(exif_imagetype($source) == IMAGETYPE_GIF)
  18. {
  19.  $img_src = imagecreatefromgif($source);
  20. }
  21. elseif(exif_imagetype($source) == IMAGETYPE_PNG)
  22. {
  23.  $img_src = imagecreatefrompng($source);
  24. }
  25. else
  26. {
  27.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  28. }
  29.  
  30.  $image_x = imagesx($img_src);
  31.  $image_y = imagesy($img_src);
  32.  if($image_x > $image_y) // Landscape
  33.  {
  34. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  35. $ratio_y = $ratio_x;
  36. $move = 'y';
  37.  }
  38.  else // Portrait
  39.  {
  40. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  41. $ratio_x = $ratio_y;
  42. $move = 'x';
  43.  }
  44. $new_x = $image_x*$ratio_x;
  45. $new_y = $image_y*$ratio_y;
  46.  
  47. $move_x = ($move == "x") ? ($max_x-$new_x)/: 0;
  48. $move_y = ($move == "y") ? ($max_y-$new_y)/: 0;
  49. $new_img = imagecreatetruecolor($max_x, $max_y); //tworzy obrazek o identyfikatorze $new_img i rozmiarach $max_x i $max_y
  50. $background = imagecolorallocate($new_img, 255, 255, 255); //przypisuje kolor czarny (255, 255, 255) do obrazka $new_img
  51. imagefill($new_img, 0, 0, $background); //wypełnia obrazek $new_image przypisanym kolorem $background
  52. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  53.  
  54. if(exif_imagetype($save_image) == IMAGETYPE_JPEG) //tworzy zmniejszony obrazek $save_image w zależności od typu pliku
  55. {
  56.  imagejpeg($new_img, $save_image, $jpeg_quality);
  57. }
  58. elseif(exif_imagetype($save_image) == IMAGETYPE_GIF)
  59. {
  60.  imagegif($new_img, $save_image);
  61. }
  62. elseif(exif_imagetype($save_image) == IMAGETYPE_PNG)
  63. {
  64.  imagepng($new_img, $save_image);
  65. }
  66.  
  67.  echo '<img src="'.$save_image.'" border="1">'; //wyświetla zmniejszony obrazek $save_image
  68. }
  69. // koniec definicji funkcji robiącej miniaturę
  70. ?>


Ten post edytował grattz 23.01.2007, 20:58:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
grattz
post
Post #2





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Cytat(sagittariuspl @ 25.01.2007, 18:59:04 ) *
może po prostu nie pobiera nazwy pliku odpowiednio?...
wywołaj funkcję ze stałymi wartościami, np. resizeImage('nazwapliku.jpg', 60, 60, 'zapisy.jpg', 100) oczywiście podając poprawne dane nazw pliku.

pisząc posta zauważyłem jeszcze coś ciekawego: może zamiast "60px" wpisz po prostu 60? tzn. zamiast wartości tekstowej - liczbę

Napisałem tak:
  1. <?php
  2. $source = '../portal2006/uploads/16Sample2.jpg';
  3.  $max_x = "60";
  4.  $max_y = "60";
  5.  $save_image = miniaturka16Sample2.jpg;
  6.  $jpeg_quality = 88;
  7. ?>


Przy czym plik 16Sample2.jpg oczywiście znajdował sie juz w tym katalogu przed wykonaniem funkcji. I mimo to miniaturka sie nie utworzyła.

Myśle myśle i nie wiem co jest (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif) Najgorsze jest to ze nie ma wykazu błędu.
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: 10.10.2025 - 21:04