Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja skalująca obraz - jakość
john_doe
post
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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


Ten post edytował john_doe 28.05.2010, 15:14:37
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


http://php.net/manual/en/function.imagejpeg.php, ostatni parametr to jakość, domyślnie jest na 75, ustaw na 100 i sprawdź

Ten post edytował tehaha 28.05.2010, 15:20:25
Go to the top of the page
+Quote Post
uzi123
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 7.05.2010

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


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


--------------------
-------------------------------------------------------------------------
My blog
Go to the top of the page
+Quote Post
zend
post
Post #4





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


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
Go to the top of the page
+Quote Post
uzi123
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 7.05.2010

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


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


--------------------
-------------------------------------------------------------------------
My blog
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 Aktualny czas: 22.08.2025 - 05:19