Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][HTML]Dobrze wygladające miniatury,jak to zrobić?
Forum PHP.pl > Forum > Przedszkole
emeres1
Witam serdecznie,
jak wyświetlić w miare równe i łądnie wygładające miniaturki zdjęć?.Mam na myśli to,że ładując zdjęcia z bazy danych o okreslonych wymiarach zdjęcia są rozmazane(co naturalne,zdjęcia są przecież róznej wielkości).Jak rozwiązać ten problem i łądować miniaturki zdjęć wyglądające mniej więcej tak jak tu www.fotka.pl .Nie wierze w to ,że ktoś siedzi i ręcznie przerabia kilka tysięcy zdjęć dziennie ,a nie udało mi się wymyślić niestety jak osiągnąć taki efekt.Ktoś może mi pomóc?

pozdrawiam
lobopol
Bo nikt ich ręcznie nie przerabia, tylko podczas wrzucania na serwer generowana jest miniatura.
marcel_gdynia
Miniatura generowana jest podczas wrzucania na serwer lub generowana "w locie". Można to zrobić na kilka sposobów. Np. wykorzystać imagecopyresampled.
Poniżej kod który zmniejsza zdjęcie do wymiaru i dodatkowo kadruje z góry i z dołu do zadanego wymiaru:
  1. $x = 636; //szerokość zdjęcia po wgraniu na serwer
  2. $zdj = imagecreatefromjpeg("../foto/$kolejny_nr.JPG");
  3. $zdjx = imagesx($zdj);
  4. $zdjy = imagesy($zdj);
  5. $y = ceil($zdjy*($x/$zdjx));
  6.  
  7. $wsp = 1.59; //współczynnik odcinania wysokości 636*1,59=400
  8. $nowawys = $x / $wsp;
  9. $nowawys = number_format($nowawys,0,"","");
  10. $odetnij = $y - $nowawys;
  11. $gora = $odetnij / 2;
  12. $dol = $odetnij / 2;
  13.  
  14. $nowezdj = imagecreatetruecolor($x,$y-$gora-$dol);
  15. imagecopyresampled($nowezdj,$zdj,0,0,0,0+$gora,$x,$y,$zdjx,$zdjy);
  16. imagejpeg($nowezdj,"../foto/$kolejny_nr.JPG",80);

Każde zdjęcie wgrane na serwer z formularza będzie przeskalowane do wymiarów 636*$y, potem obliczane jest ile trzeba odciąć z góry i z dołu żeby osiągnąć wymiar 636*400, odcinamy górę i dół, zapisujemy $nowezdj.
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.