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:
function zaladuj_zdjecie_robot($id, $plik_temp, $zdj_glowne_temp, $format, $max_id_parametr) {//funkcja ładuje tymczasowe zdjęciai tworzy miniaturki $sciezka = "../zdjecia/"; $max_id_zdj = oblicz_max_zdj('zdjecia','zdj_id',$id);//zwraca największy numer id +1 $nazwa_pliku = $id.'_'.$max_id_zdj.'.'.$format;//składamy nazwe pliku } else { $max_szerokosc = 1000;//zdjęcie duże $max_wysokosc = 1200; zmien_wielkosc($id, $max_szerokosc, $max_wysokosc, $nazwa_pliku, $sciezka, '', $format);// ograniczenie wielkości największego zdjęcia $max_szerokosc = 320;//zdjęcie małe $max_wysokosc = 360; zmien_wielkosc($id, $max_szerokosc, $max_wysokosc, $nazwa_pliku, $sciezka, 'smal/', $format);//srednie zdjęcie $max_szerokosc_normal = 150;//zdjęcie średnie $max_wysokosc_normal = 160; zmien_wielkosc($id, $max_szerokosc_normal, $max_wysokosc_normal, $nazwa_pliku, $sciezka, "normal/", $format);//małe zdjęcie //jezeli orginał jest większy niż średnie, kasujemy orginał. $szerokosc_org=$rozmiar[0]; $wysokosc_org=$rozmiar[1]; } if(($max_wysokosc_normal >= $wysokosc_org) && ($max_szerokosc_normal >= $szerokosc_org)) { } } }//end function function zmien_wielkosc($id, $max_szerokosc, $max_wysokosc, $nazwa_pliku, $sciezka, $sciezka_2, $format) {//zmienia wielkośc orginału } $szerokosc=$rozmiar[0]; $wysokosc=$rozmiar[1]; $wspolczynnik_x=$max_szerokosc/$szerokosc; $wspolczynnik_y=$max_wysokosc/$wysokosc; if(($szerokosc<=$max_szerokosc)&&($wysokosc<=$max_wysokosc)) { $nowa_szerokosc=$szerokosc; $nowa_wysokosc=$wysokosc; } else if (($wspolczynnik_x*$wysokosc)<$max_wysokosc) { $nowa_szerokosc=$max_szerokosc; } else { $nowa_wysokosc=$max_wysokosc; } switch($format) { case 'jpg': case 'jpeg'://to chyba niepotrzenbe $zrd=ImageCreateFromJpeg($sciezka.$nazwa_pliku); break; //inne formaty pozniej } $prz=@ImageCreateTrueColor($nowa_szerokosc, $nowa_wysokosc); @ImageCopyResampled($prz, $zrd, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc); switch($format) { case 'jpg': case 'jpeg'://to chyba niepotrzenbe ImageJpeg($prz, $sciezka.$sciezka_2.$nazwa_pliku, 90); break; //inne formaty pozniej } }//end function
Czy użyte tutaj mechanizmy modyfikacji zdjęć są optymalne?
Czy w php da się otrzymać lepszą jakość skalowanych fotek?