Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja skalująca obraz - jakość
Forum PHP.pl > Forum > PHP
john_doe
Witam,

napisałem funkcję, która skaluje mi obraz. Wgrywam na serwer zdjęcie o wys. 768 px i odpalam funkcję i skaluję ją do 600px wys. - jakość jest gorsza. Jakieś pomysły, widzicie jakieś bugi w tym skrypcie?
zakomentowana ImageCopyResized() = jest jeszcze gorzej

  1. function resizeImg( $plik, $extension, $height )
  2. {
  3. $rozmiar = getimagesize( $plik );
  4.  
  5. $szerokosc = $rozmiar[0];
  6.  
  7. $wysokosc = $rozmiar[1];
  8.  
  9. $nowa_wysokosc = $height;
  10.  
  11. $nowa_szerokosc = $szerokosc * ( $nowa_wysokosc / $wysokosc );
  12.  
  13. switch( $extension )
  14. {
  15. case 'jpg':
  16. $oryginal = imageCreateFromJpeg( $plik );
  17. break;
  18.  
  19. case 'JPG':
  20. $oryginal = imageCreateFromJpeg( $plik );
  21. break;
  22.  
  23. case 'jpeg':
  24. $oryginal = imageCreateFromJpeg( $plik );
  25. break;
  26.  
  27. case 'JPEG':
  28. $oryginal = imageCreateFromJpeg( $plik );
  29. break;
  30.  
  31. case 'gif':
  32. $oryginal = imageCreateFromGif( $plik );
  33. break;
  34.  
  35. case 'GIF':
  36. $oryginal = imageCreateFromGif( $plik );
  37. break;
  38.  
  39. case 'png':
  40. $oryginal = imageCreateFromPng( $plik );
  41. break;
  42.  
  43. case 'PNG':
  44. $oryginal = imageCreateFromPng( $plik );
  45. break;
  46.  
  47. }
  48.  
  49. $obrazek = ImageCreateTrueColor( $nowa_szerokosc, $nowa_wysokosc );
  50.  
  51. //ImageCopyResized( $obrazek, $oryginal, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc );
  52.  
  53. $image = imagecreatefromjpeg($plik);
  54.  
  55. imagecopyresampled( $obrazek, $image, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc );
  56.  
  57. ImageJPEG( $obrazek, $plik );
  58.  
  59.  
  60. }
tehaha
http://php.net/manual/en/function.imagejpeg.php, ostatni parametr to jakość, domyślnie jest na 75, ustaw na 100 i sprawdź
uzi123
Skorzystaj z parametru określającego jakość. Jest on dostępny dla imagepng i imagejpeg. Dla pozostałych nie ma tej opcji. NA początek ustaw ten parametr na 100. Duże masz te pliki? Jaka jest rozdzielczość?

offtopic.gif
Poza tym jeszcze jedna dobra rada: jak już wykonujesz getimagesize to masz od razu typ pliku i nie musisz się martwić o różne wielkości czcionek lub długości nazw. Przykład masz tu
zend
Podpisam się do tematu, wykonałem stronę z galerią z automatycznym skalowaniem, fotograf skarży się że zdjęcia są kiepskiej jakości po skalowaniu, faktycznie, są odrobinę mniej kolorowe mimo ustawienia jakości na 100. Czy spotkaliście się z czymś takim? Udało się to jakoś obejść? Nie licząc oczywiście wmawiania że tak ma być i guitar.gif . Może trzeba ustawić na 101? aaevil.gif
uzi123
A czy testowaliście inne rozwiązania niż biblioteka GD? Np jest wsparcie do http://www.php.net/manual/en/book.imagick.php. Zasadniczo GD nie jest najlepsze, ale jest praktycznie na wszystkich serwerach, więc się je najczęściej stosuje
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.