Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomnniejszanie obrazka
Forum PHP.pl > Forum > PHP
Kamil9132
Witam
Mam taką funkcję do pomniejszania obrazka:
  1. function resize_ratio($file, $new_w, $new_h, $save)
  2. {
  3. if (!is_readable($file))
  4. {
  5. return FALSE;
  6. }
  7.  
  8. $wysokosc = imagesy($file);
  9.  
  10. $info = @getimagesize($file);
  11. switch ($info['mime'])
  12. {
  13. case "image/gif":
  14. $file = imagecreatefromgif($file);
  15. break;
  16. case "image/jpeg":
  17. $file = imagecreatefromjpeg($file);
  18. break;
  19. case "image/png":
  20. $file = imagecreatefrompng($file);
  21. break;
  22. }
  23.  
  24. $old_x = imageSX($file);
  25. $old_y = imageSY($file);
  26.  
  27. if ($old_x > $old_y)
  28. {
  29. $thumb_w=$new_w;
  30. $thumb_h=$old_y*($new_h/$old_x);
  31. }
  32.  
  33. if ($old_x < $old_y)
  34. {
  35. $thumb_w=$old_x*($new_w/$old_y);
  36. $thumb_h=$new_h;
  37. }
  38.  
  39. if ($old_x == $old_y)
  40. {
  41. $thumb_w=$new_w;
  42. $thumb_h=$new_h;
  43. }
  44.  
  45. $th = ImageCreateTrueColor($thumb_w, $thumb_h);
  46. @imagecopyresampled($th, $file, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y);
  47. @imagejpeg($th, $save);
  48. @imagedestroy($file);
  49. @imagedestroy($th);
  50. return TRUE;
  51. }
  52.  
  53. resize_ratio("$zdjecie", "660", "200", "$zdjecie");


Ale teraz chcę zmieniać aby szerokość ,a nie wysokość próbowałem zrobić tak:
  1. resize_ratio("$zdjecie", "660", "$wysokosc", "$zdjecie");]



Ale nie działa czemu questionmark.gif
kiler129
Cytat(Kamil9132 @ 26.03.2011, 13:59:23 ) *
Ale teraz chcę zmieniać aby szerokość ,a nie wysokość próbowałem zrobić tak:


Bo wróbelek ma jedna krótszą yahoo.gif

A tak na serio sprecyzuj co chcesz osiągnąć i co nie działa.
Kamil9132
Nie działa to ,że jak wprowadzę to:
  1. resize_ratio("$zdjecie", "660", "$wysokosc", "$zdjecie");]

Nie działa ta funkcja.

A chcę osiągnąć to żeby funkcja jedynie zmniejszała szerokość ,a wysokość pozostawiała niezmienianą.
kiler129
Cytat(Kamil9132 @ 26.03.2011, 16:21:22 ) *
Nie działa to ,że jak wprowadzę to:
  1. resize_ratio("$zdjecie", "660", "$wysokosc", "$zdjecie");]

Nie działa ta funkcja.

A chcę osiągnąć to żeby funkcja jedynie zmniejszała szerokość ,a wysokość pozostawiała niezmienianą.


Ale nie da się zmniejszając jeden wymiar zachować proporcji smile.gif
Jeśli chcesz bez zachowania proporcji na sztywno zmniejszać szerokość użyj takiego kodu:
  1. <?php
  2. function changeWidth($file, $new_width, $save) {
  3. if (!is_readable($file))
  4. return FALSE;
  5.  
  6. $info = @getimagesize($file);
  7. switch ($info['mime']) {
  8. case "image/gif":
  9. $file = imagecreatefromgif($file);
  10. break;
  11. case "image/jpeg":
  12. $file = imagecreatefromjpeg($file);
  13. break;
  14. case "image/png":
  15. $file = imagecreatefrompng($file);
  16. break;
  17. }
  18.  
  19. $old_height = $new_height = imageSY($file); //Wysokość pozostaje niezmienna
  20. $old_width = imageSX($file);
  21. // $new_width zostalo przekazane jako arguyment funkcji
  22.  
  23. $th = ImageCreateTrueColor($new_width, $new_height);
  24. @imagecopyresampled($th, $file, 0, 0, 0, 0, $new_width, $new_height, $old_width, $old_height);
  25. @imagejpeg($th, $save);
  26. @imagedestroy($file);
  27. @imagedestroy($th);
  28. return TRUE;
  29. }
  30.  
  31. changeWidth("zdjecie.jpg", "200", "zdjecie2.jpg");
  32. ?>
Kamil9132
To jak zrobić z zachowaniem proporcji questionmark.gif
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.