Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Jakość zeskalowanych zdjęć?, Jakośc zdjęcia jpg ustaliłem na 90 a mimo to jakośc zdjęcia jest bardz
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.

Podczas skalowania zdjęć okazało sie, że zmniejszone zdjęcia są słavbej jakości.. oryginały z których tworze miniaturki są już skompresowane, jednak skalując to samo zdjęcie w photoshopie, zdjęcie wygląda dużo dużo ładniej..

Moja funkcja skalująca zdjęcia:

  1. function zaladuj_zdjecie_robot($id, $plik_temp, $zdj_glowne_temp, $format, $max_id_parametr) {//funkcja ładuje tymczasowe zdjęciai tworzy miniaturki
  2. global $dbprefix;
  3. global $cfg;
  4.  
  5. $sciezka = "../zdjecia/";
  6. $max_id_zdj = oblicz_max_zdj('zdjecia','zdj_id',$id);//zwraca największy numer id +1
  7. $nazwa_pliku = $id.'_'.$max_id_zdj.'.'.$format;//składamy nazwe pliku
  8.  
  9.  
  10. if (!copy($plik_temp,$sciezka.$nazwa_pliku)) {
  11. print('Zdjęcie '.$id.' nie zostało załadowane poprawnie.');
  12.  
  13. } else {
  14.  
  15. print('Zdjęcie załądwane');
  16.  
  17. $max_szerokosc = 1000;//zdjęcie duże
  18. $max_wysokosc = 1200;
  19. zmien_wielkosc($id, $max_szerokosc, $max_wysokosc, $nazwa_pliku, $sciezka, '', $format);// ograniczenie wielkości największego zdjęcia
  20.  
  21. $max_szerokosc = 320;//zdjęcie małe
  22. $max_wysokosc = 360;
  23. zmien_wielkosc($id, $max_szerokosc, $max_wysokosc, $nazwa_pliku, $sciezka, 'smal/', $format);//srednie zdjęcie
  24.  
  25. $max_szerokosc_normal = 150;//zdjęcie średnie
  26. $max_wysokosc_normal = 160;
  27. zmien_wielkosc($id, $max_szerokosc_normal, $max_wysokosc_normal, $nazwa_pliku, $sciezka, "normal/", $format);//małe zdjęcie
  28.  
  29. //jezeli orginał jest większy niż średnie, kasujemy orginał.
  30. if (file_exists($sciezka.$nazwa_pliku)) {//sprawdzamy wielkośc orginału
  31. $rozmiar=GetImageSize($sciezka.$nazwa_pliku);
  32. $szerokosc_org=$rozmiar[0];
  33. $wysokosc_org=$rozmiar[1];
  34. }
  35.  
  36. if(($max_wysokosc_normal >= $wysokosc_org) && ($max_szerokosc_normal >= $szerokosc_org)) {
  37. unlink($sciezka.$nazwa_pliku);
  38. }
  39. }
  40. }//end function
  41.  
  42. function zmien_wielkosc($id, $max_szerokosc, $max_wysokosc, $nazwa_pliku, $sciezka, $sciezka_2, $format) {//zmienia wielkośc orginału
  43.  
  44. if (!is_dir ($sciezka.$sciezka_2)) {
  45. mkdir($sciezka.$sciezka_2, 0777);
  46. }
  47. $rozmiar=GetImageSize($sciezka.$nazwa_pliku);
  48.  
  49. $szerokosc=$rozmiar[0];
  50. $wysokosc=$rozmiar[1];
  51.  
  52. $wspolczynnik_x=$max_szerokosc/$szerokosc;
  53. $wspolczynnik_y=$max_wysokosc/$wysokosc;
  54.  
  55. if(($szerokosc<=$max_szerokosc)&&($wysokosc<=$max_wysokosc)) {
  56. $nowa_szerokosc=$szerokosc;
  57. $nowa_wysokosc=$wysokosc;
  58. } else if (($wspolczynnik_x*$wysokosc)<$max_wysokosc) {
  59. $nowa_wysokosc=ceil($wspolczynnik_x*$wysokosc);
  60. $nowa_szerokosc=$max_szerokosc;
  61. } else {
  62. $nowa_szerokosc=ceil($wspolczynnik_y*$szerokosc);
  63. $nowa_wysokosc=$max_wysokosc;
  64. }
  65.  
  66. switch($format) {
  67.  
  68. case 'jpg':
  69. case 'jpeg'://to chyba niepotrzenbe
  70. $zrd=ImageCreateFromJpeg($sciezka.$nazwa_pliku);
  71. break;
  72.  
  73. //inne formaty pozniej
  74.  
  75. }
  76.  
  77. $prz=@ImageCreateTrueColor($nowa_szerokosc, $nowa_wysokosc);
  78. @ImageCopyResampled($prz, $zrd, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  79.  
  80. switch($format) {
  81.  
  82. case 'jpg':
  83. case 'jpeg'://to chyba niepotrzenbe
  84. ImageJpeg($prz, $sciezka.$sciezka_2.$nazwa_pliku, 90);
  85. break;
  86.  
  87. //inne formaty pozniej
  88. }
  89.  
  90. }//end function


Czy użyte tutaj mechanizmy modyfikacji zdjęć są optymalne?
Czy w php da się otrzymać lepszą jakość skalowanych fotek?


Ten post edytował kukix 14.05.2012, 11:05:49
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: 23.08.2025 - 23:00