Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeskalowywanie - co z kolorami?
Forum PHP.pl > Forum > Gotowe rozwiązania
pagod
witam.

  1. <?php
  2.  
  3. //obrazek
  4. if ($obrazek)
  5. {
  6. $max_rozmiar = 1024*1024;
  7. if (is_uploaded_file($_FILES['obrazek']['tmp_name'])) {
  8. if ($_FILES['obrazek']['size'] > $max_rozmiar) {
  9. echo 'Błąd! Plik jest za duży!';
  10. } else {
  11. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['obrazek']['name'];
  12. echo '<br/>';
  13. if (isset($_FILES['obrazek']['type'])) {
  14. echo 'Typ: '.$_FILES['obrazek']['type'].'<br/>';
  15. }
  16. $obrazek=$_FILES['obrazek']['name'];
  17. $name = substr($obrazek, 0, strlen($obrazek) - 4);
  18. $name = $name.&#092;".jpg\";
  19.  
  20. move_uploaded_file($_FILES['obrazek']['tmp_name'],
  21. $_SERVER['DOCUMENT_ROOT'].'/obrazki/'.$name);
  22. $size = 105;
  23. $img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/obrazki/'.$name);
  24. $img_w = imagesx($img);
  25. $img_h = imagesy($img);
  26. $ratio = ( $img_w / $img_h );
  27. if($img_h<105)
  28. {
  29.  $new_img_h = $img_h;
  30.  $new_img_w = $img_w;
  31. }
  32. elseif($ratio > 1)
  33. {
  34.  $new_img_h = $size;
  35.  $new_img_w = ($size * $ratio);
  36. }
  37. else
  38. {
  39.  $new_img_w = ($size * $ratio);
  40.  $new_img_h = $size;
  41. }
  42. echo ('wymiary to: '.$img_w.' x '.$img_h.'.');
  43. echo ('ratio: '.$ratio.'.');
  44. echo ('<br>nowe wymiary to: '.$new_img_w.' x '.$new_img_h.'.');
  45.  $tempImg = imagecreate($new_img_w, $new_img_h);
  46.  ImageCopyResized($tempImg, $img, 0, 0, 0, 0,
  47.  $new_img_w, $new_img_h, $img_w, $img_h);
  48.  $name = substr($obrazek, 0, strlen($obrazek) - 4);
  49.  $name = $name.&#092;"_m.jpg\";
  50.  imagejpeg($tempImg, $_SERVER['DOCUMENT_ROOT'].'/obrazki/'.$name);
  51. }
  52. } else {
  53.  echo 'Błąd przy przesyłaniu danych!<br>';
  54. }
  55. }
  56. //koniec obrazka
  57.  
  58. ?>


Glowny efekt jest osiagany - obrazki sa zmniejszane do żądanej wysokości. Niestety - wyglądają brzydko, bądź bardzo brzydko.
http://www.godowski.com/index.php?lewa=1&prawa=1
tutaj przyklad jak wyglada ten sam obrazek "przycinany" i przeskalowywany przez skrypt.

Co moze byc przyczyna - czy tkwi ona w skrypcie, czy caly skrypt jest do d... i lepiej poszukac innego?
mike
Cytat
imagecopyresized

( ... )
The image will be output at half size, though better quality could be obtained using imagecopyresampled().

+ imagecreatetruecolor()
pagod
No tak, jakie to proste.

Dzieki.
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-2024 Invision Power Services, Inc.