Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CSS][HTML]Dobrze wygladające miniatury,jak to zrobić?
emeres1
post 10.05.2010, 20:38:56
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 28.03.2010

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
lobopol
post 11.05.2010, 00:07:59
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Bo nikt ich ręcznie nie przerabia, tylko podczas wrzucania na serwer generowana jest miniatura.


--------------------
Go to the top of the page
+Quote Post
marcel_gdynia
post 11.05.2010, 04:40:37
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 10.03.2010

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


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.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:30