Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Słabej jakości miniaturki
Forum PHP.pl > Forum > Przedszkole
jasiek65
Witam. Postanowiłem zrobić bardzo prostą galerię zdjęć i wszystko działa dobrze oprócz jednej rzeczy otóż znalazłem gdzieś w internecie skrypt robiący miniaturki oto jego kod:

  1. <?
  2.  
  3. $fol = "./zdjecia/"; // folder ze zdjęciami
  4. $prfx = "min_"; // prefix poprzedzający nazwy miniaturek
  5. $i = 0;
  6.  
  7. $naz = array();
  8. $dane = @file($fol."/dane.txt");
  9. if(is_array($dane)) foreach($dane as $v) {
  10. $t = explode("|", $v);
  11. $naz[] = $t[0];
  12. }
  13.  
  14. $uchwyt = opendir($fol);
  15. while(false !== ($plik = readdir($uchwyt)))
  16. if(is_file($fol."/".$plik) &&
  17. (!is_file($fol."/".$prfx.$plik) || !in_array($plik, $naz)) &&
  18. substr($plik, 0, strlen($prfx)) != $prfx &&
  19. ereg("^.+\.jpe?g$", $plik)) {
  20. $org = imagecreatefromjpeg($fol."/".$plik);
  21. $s_org = imagesx($org);
  22. $w_org = imagesy($org);
  23. $s_min = 150;
  24. if(($w_min = floor(($s_min * $w_org) / $s_org)) > 150) $w_min = 150;
  25. $min = imagecreate($s_min, $w_min);
  26. imagecopyresized($min, $org, 0, 0, 0, 0, $s_min, $w_min, $s_org, $w_org);
  27. imagedestroy($org);
  28. imagejpeg($min, $fol."/".$prfx.$plik, 50);
  29. imagedestroy($min);
  30. if(in_array($plik, $naz)) unset($dane[array_search($plik, $naz)]);
  31. $dane[] = "$plik|$s_org|$w_org|$prfx$plik|$s_min|$w_min\n";
  32. $i++;
  33. }
  34. closedir($uchwyt);
  35.  
  36.  
  37. $fp = fopen($fol."/dane.txt", "w");
  38. flock($fp, 2);
  39. fputs($fp, str_replace("\r", "", join("", $dane)));
  40. flock($fp, 2);
  41. fclose($fp);
  42.  
  43. echo "Ilość utworzonych miniaturek: ".$i;
  44.  
  45. ?>


Skrypt działa ,ale tworzy miniaturki bardzo słabej jakości,rozmazane ogólnie beznadziejne:

Zdjęcie przed kompresją:


Miniaturka:






Czy da się jakoś rozwiązać mój problem modyfikując ten skrypt?


Pozdrawiam:)
nospor
http://pl.php.net/manual/pl/function.imagejpeg.php
Zobacz jakie przyjmuje parametry a nastepnie zastanow sie co poprawic w tej funkcji u Siebie

Cytat
Czy da się jakoś rozwiązać mój problem modyfikując ten skrypt?
Po grzyba walisz to pogrubioną i powiększoną czciąnką!
jasiek65
mógłbyś mnie nakierować bo skrypt wydaje mi się w porządku
nospor
Nie chodzi mi o caly skrypt a tylko i wyłącznie o funkcję imagejpeg. Specjalnie do niej zapodałem ci linka do manuala i miales się przyjrzec wszystkim parametrom. Zadanie nie wykonane - do powtórki smile.gif
jasiek65
imagejpeg($min, $fol."/".$prfx.$plik, 50);
czy chodzi o $quality co mam zrobić żeby zdjęcia były tylko pomniejszone?
tak mam to napisać?
[php]imagejpeg($min[, $fol."/".$prfx.$plik[, 250]]); [php]
nospor
jakie 250? Przecież masz jak wol napisane ze quality moze byc max 100

imagejpeg($min, $fol."/".$prfx.$plik, 100);
jasiek65
wiem ale to nic nie pomaga dalej jest miniaturka taka jak poprzednio
nospor
Teoretycznie powinna byc lepsza. Zaraz lukne jeszcze raz na kod
jasiek65
ok
Czy może to być wina hosta, który blokuje jakąś funkcję?
nospor
Być może chodzi o funkcję imagecopyresized
Ja zamiast jej używam imagecopyresampled i mi Twój obrazek wyszedł idealnie.
jasiek65
a u mnie dalej beznadziejnie
nospor
Ok, ja jeszcze zamiast imagecreate uzywam imagecreatetruecolor smile.gif
jasiek65
Cytat(nospor @ 1.02.2011, 11:45:43 ) *
Ok, ja jeszcze zamiast imagecreate uzywam imagecreatetruecolor smile.gif


Dzięki ,teraz wszytko myka jak należy rolleyes.gif
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.