Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] rozdzielczosc zdjecia
Forum PHP.pl > Forum > Przedszkole
blank_screen
Witam,
mam male pytanko, chcialbym zeby po uploadzie zdjecia na serwer skrypt rozpoznawal jego rozdzielczosc i pozniej generowal tylko mniejsze od niego rozdzielczosci, gdyz jak wygeneruje mi wieksze to zdjecie bedzie rozciagniete i niewyrazne, przykladowo uploaduje zdjecie 1024x768, a moj aktualny skrypt tworzy mi miniature 800x600, co w tym przypadku jest ok, ale takze tworzy obrazy w rozdzielczosciach 1600x1200 i 1920x1080, a tego chcialbym uniknac... moj skrypt wyglada tak:

  1. <?php
  2. case img:
  3. if($type == "1") {
  4. $ext = strrchr("$img",".");
  5. $ext = str_replace( '.', '', $ext );
  6. if($_GET['size'] == '1') { $width = '1920'; $height = '1080 '; } elseif($_GET['size'] == '2') { $width = '1600'; $height = '1200 '; } elseif($_GET['size'] == '3') { $width = '1024'; $height = '768 '; } elseif($_GET['size'] == '4') { $width = '800'; $height = '600 '; }
  7. echo "<img src='".URL."imgs/".$img."' width='".$width."' height=".$height.">"; }
  8. break;
  9. ?>



Z gory dzieki i pozdrawiam
patryczakowy
ten skrypt worzy miniaturki o podanych wymiarach skaluje odpowiednio boki mozesz go sobie dostosować do swoich potrzeb
  1. <?php
  2. $obrazek = $_REQUEST['obrazek'];
  3. $max_szerokosc = $_REQUEST['max_szerokosc'];
  4. $max_wysokosc = $_REQUEST['max_wysokosc'];
  5.  
  6. if (!$max_szerokosc)
  7.  $max_szerokosc = 80;
  8. if (!$max_wysokosc)
  9.  $max_wysokosc = 60;
  10.  
  11. $rozmiar = GetImageSize($obrazek);
  12. $szerokosc = $rozmiar[0];
  13. $wysokosc = $rozmiar[1];
  14.  
  15. $wspolczynnik_x = $max_szerokosc / $szerokosc;
  16. $wspolczynnik_y = $max_wysokosc / $wysokosc;
  17.  
  18. if ( ($szerokosc <= $max_szerokosc) && ($wysokosc <= $max_wysokosc) ) {
  19.  $nowa_szerokosc = $szerokosc;
  20.  $nowa_wysokosc = $wysokosc;
  21. }
  22. else if (($wspolczynnik_x * $wysokosc) < $max_wysokosc) {
  23.  $nowa_wysokosc = ceil($wspolczynnik_x * $wysokosc);
  24.  $nowa_szerokosc = $max_szerokosc;
  25. }
  26. else {
  27.  $nowa_szerokosc = ceil($wspolczynnik_y * $szerokosc);
  28.  $nowa_wysokosc = $max_wysokosc;
  29. }
  30.  
  31. $zrd = ImageCreateFromJpeg($obrazek);
  32. $prz = ImageCreateTrueColor($nowa_szerokosc,$nowa_wysokosc);
  33. Imagecopyresampled($prz, $zrd, 0, 0, 0, 0,
  34.    $nowa_szerokosc,$nowa_wysokosc,$szerokosc,$wysokosc);
  35. header('Content-type: Image/jpeg');
  36. ImageJpeg($prz, null, -1);
  37. ImageDestroy($zrd);
  38. ImageDestroy($prz);
  39. ?>
Spawnm
Proszę dodać tag do tematu.
blank_screen
nie wiem czy sie zrozumielismy, nie jestem az tak dobry w PHP, ba, prawie wcale go nie znam, orientuje sie nieco ogolnie w zakresie programowania, moglbys mnie bardziej naprowadzic? dzieki za zainteresowanie moim problemem
patryczakowy
możesz zapisać ten skrypt np jako zmianaWielkosci.php a wywoływać go w ten sposób
  1. <img src="zmianaWielkosci.php?obrazek=adresobrazka.jpg&max_szerokosc=600&max_wysokosc=600"/>

W ten sposób zostanie wygenerowana miniaturka co ważne zostanie przesłana do przeglądarki już pomniejszona co zaoszczędzi twój transfer oczywiście szerokość i wysokość możesz zmienić
Chrom
może się mylę ale skorzystaj z podanego przez patryczakowatego rozwiązania, Twój skrypt zapisuje zdjęcia w standardowych wymiarach a co będzie jak ktoś wyśle tasiemkę 100/10000, czasami zdjęcia są obrabiane/kadrowane i nie posiadają standardowych wymiarów, cała strona może się wtedy rozjechać.
patryczakowy
Cytat(Chrom @ 3.08.2009, 13:39:35 ) *
Twój skrypt zapisuje zdjęcia w standardowych wymiarach a co będzie jak ktoś wyśle tasiemkę 100/10000,

zostanie proporcjonalnie przeskalowana a poza tym skrypt skaluje i wysyła do przeglądarki nie zapisuje ze skalowanego obrazka i dlatego wywołując go z różnymi parametrami uzyskami różne miniaturki a pełno wymiarowe zdjęcie będzie zawsze dostępne
blank_screen
ok, dzieki chlopaki za pomoc, to ja moze uchyle rabka tajemnicy i powiem ze to nie galeria, tylko planowana strona z tapetkami na pulpit, w necie jest duzo tapet w roznych rozmiarach ale generalnie nie ma wiekszych rozmiarow niz pasujace na ekran 24", czyli tak.. uploaduje sobie tapete o rozdzielczosci 800x600 i jak dodam ten skrypt(jeszcze nie wiem gdzie) to bede mial w swojej kolekcji tylko ten jeden rozmiar, nie bedzie rozciagnietej 1920x1080 ani 1600x1200, ktora do tej pory byla generowana automatycznie?
patryczakowy
Wszytko zależy jak tego użyjesz jak chce ci się bawić to użytkownik może sam podawać rozdzielczość jaka go interesuje.
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.