Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmiana rozdzielczosci obrazka
Forum PHP.pl > Forum > PHP
bastek8989
Witam

Znalazlem w internecie funkcje ktora zmienia mi wielkosc obrazka bez utraty jakosci
wystarczy ze podam adres

thumb150.php?fileName=upload/obrazki/zd17249.jpg

gdzie ten fragmencik thumb150.php?fileName= przerabia obrazek 150x150

i tu pytanie w czym tkwi haczyk, czym sie to rozni jesli zapisanie obrazka jako miniaturke od zminiejszenia bez utraty jakosci orginalu online

czy wydluza to znacznie dzialanie kodu??

dziekuje pozdrawiam
Amorph
Zmieniając rozdzielczość z większej na mniejszą...(czyt. tworząc thumba nie tracisz na jakości) Największą stratę jakości obserwuje się przy przeskalowaniu obrazów z 100 na mniej więcej 99 procent. Zamiast tracić moc obliczeniową proponowałbym przeskalowywać odrazu przy uploadzie i fizycznie zapisywać 2 plik.
DANGER
  1. <?php
  2. //plik1 to plik wyslany z formularza
  3. if ($plik1!=''){
  4.  $dir2 = 'foty/'.$id.'_1.jpg';
  5.  
  6.  $file = $plik1;
  7.  $org = imagecreatefromjpeg($file);
  8.  $size_org = getimagesize($file);
  9.  
  10. if ($size_org[0] > $size_org[1]) {
  11. $x_new = 500;
  12. $y_new = $x_new * $size_org[1]/$size_org[0];
  13. } else {
  14. $y_new = 500;
  15. $x_new = $y_new * $size_org[0] / $size_org[1];
  16.  }
  17.  
  18. $new = imagecreatetruecolor($x_new,$y_new);
  19.  
  20.  imagecopyresampled($new,$org,0,0,0,0,$x_new,$y_new,$size_org[0],$size_org[1]);
  21. imagejpeg($new,$dir2,80);
  22. imagedestroy($new);
  23. imagedestroy($org);
  24.  
  25.  
  26.  
  27. $dir2 = 'foty/'.$id.'_1m.jpg';
  28.  
  29.  $file = 'foty/'.$id.'_1.jpg';
  30.  $org = imagecreatefromjpeg($file);
  31.  $size_org = getimagesize($file);
  32.  
  33. if ($size_org[0] > $size_org[1]) {
  34. $x_new = 200;
  35. $y_new = $x_new * $size_org[1]/$size_org[0];
  36. } else {
  37. $y_new = 200;
  38. $x_new = $y_new * $size_org[0] / $size_org[1];
  39.  }
  40.  
  41. $new = imagecreatetruecolor($x_new,$y_new);
  42.  
  43.  imagecopyresampled($new,$org,0,0,0,0,$x_new,$y_new,$size_org[0],$size_org[1]);
  44. imagejpeg($new,$dir2,80);
  45. imagedestroy($new);
  46. imagedestroy($org);
  47.  }
  48. ?>


masz tu skrypcik na zmienianie rozdzielczosci przy uploadzie i na tworzenie miniaturki..
bastek8989
zostane jednak przy tym pierwszym rozwiazaniu

z racji tego ze potrzebuje 3 wymiary obrazkow a roznica pomiedzy wyswietlaniem poprzez thumb.php a thumba w katalogu wynosi 300-400 mikrosekund
Ziels
A teraz pomyśl że masz 10k odwiedzin na dobę.... Serwer raczył się nieco spocić?
bastek8989
A teraz pomysl ze mam 10k obrazkow x3 (w kazdym katalogu inny wymiar) niezarobil bym na hdd smile.gif
Amorph
Średnio, dobrej jakości jpg 1024x768 to około 0,2MB x 10k= 2GB przy dzisiejszych pojemnościach nie jest to dużo....(nawet x3). Za każdym razem gdy będziesz "w locie" przeskalowywał obraz bedzie pobierany oryginalny rozmiar, co będzie powodowało zwiększanie zużycia mocy obliczeniowej oraz czasu procesora.....
co przełoży się na transfer. Przy wykupionym serwerze, częstych odwiedzinach dużo cenniejszy jest transfer niż pojemność hdd.
bastek8989
a mam pytanko odnosnie powyzszego kodu


czy zeby zrobic takie thumby dla png i gif wystarczy zmienic z jpeg na gif/png?
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.