Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pomysł na obrabianie wyświetlanego zdjęcia.
Forum PHP.pl > Forum > Przedszkole
casperii
Witam koledzy, czy ma ktoś pomysł jak wyświetlać poprawnie zdjęcie? Chodzi mi o to by nie zmniejszać je do określonego wymiaru na pałę.
Tylko w miarę rozsądnie je wyświetlić, przecież nie które zdjęcie może mieć 800 x 600 jak i 600 x 800. A przy zdjęciach portretowych to już się zaczyna robić kiszka.
Jednocześnie chcę jakiś standard tego zdjęcia zachować według schematu/szablonu CV.

Aha obecnie mam taki skrypt, ale nie jestem z tego do końca zadowolony:

  1. if(isset($_GET[img])){
  2. $imgpath = $_GET[img];
  3.  
  4. $finfo = finfo_open(FILEINFO_MIME_TYPE);
  5. $mime_type = finfo_file($finfo, $imgpath);
  6. finfo_close($finfo);
  7.  
  8. switch ($mime_type){
  9. case "image/jpeg":
  10. header('Content-Type: image/jpeg');
  11. $szerokosc=150;//147
  12. $duzy = imagecreatefromjpeg($imgpath);
  13.  
  14. if (!$duzy){
  15. $duzy = ImageCreate (150, 30);
  16. $bgc = ImageColorAllocate ($duzy, 255, 255, 255);
  17. $tc = ImageColorAllocate ($duzy, 0, 0, 0);
  18. ImageFilledRectangle ($duzy, 0, 0, 150, 30, $bgc);
  19. ImageString ($duzy, 1, 5, 5, "Błąd odczytu", $tc);
  20. }
  21.  
  22. $duzyX=ImageSX($duzy);
  23. $duzyY=ImageSY($duzy);
  24.  
  25. $maly=imagecreatetruecolor($szerokosc,($szerokosc/$duzyX)*$duzyY);
  26. $malyX=ImageSX($maly);
  27. $malyY=ImageSY($maly);
  28.  
  29. ImageCopyResized($maly,$duzy,0,0,0,0,$malyX,$malyY,$duzyX,$duzyY);
  30. imagejpeg($maly);
  31. break;
  32. }
  33. imagedestroy($maly);
  34. }
rad11
Mozesz uzyc imagemagick ktore z tego co pamietam zeskaluje Ci odpowiednio zdjecie jak chyba zwykle funkcje PHP`owe do zdjec tez powinny Ci zeskalowac.
casperii
Znalazłem coś lepszego ale kurcze nie tworzy mi na serwerze nowego pliku, nie wiem czemu (?)
Oto skrypt :

  1. <?
  2. define("IMAGE_MAGICK_PATH","/imagemagick/");
  3.  
  4. if(isset($_GET['image_ref']) && isset($_GET['x']) && isset($_GET['y']) && isset($_GET['x']) && isset($_GET['width']) && isset($_GET['convertTo'])){
  5.  
  6. $x = $_GET['x'];
  7. $y = $_GET['y'];
  8. $width = $_GET['width'];
  9. $height = $_GET['height'];
  10. $image_ref = $_GET['image_ref'];
  11. $percentSize = $_GET['percentSize'];
  12. $convertTo = $_GET['convertTo'];
  13.  
  14. $x = preg_replace("/[^0-9]/si","",$x);
  15. $y = preg_replace("/[^0-9]/si","",$y);
  16. $width = preg_replace("/[^0-9]/si","",$width);
  17. $height = preg_replace("/[^0-9]/si","",$height);
  18. $percentSize = preg_replace("/[^0-9]/si","",$percentSize);
  19.  
  20. $image_ref = str_replace("../","",$image_ref);
  21. if(substr($image_ref,0,1)=="/")exit;
  22. if($percentSize>200)$percentSize = 200;
  23.  
  24. if(strlen($x) && strlen($y) && $width && $height && $percentSize){
  25.  
  26. $convertParamAdd = "";
  27. if($percentSize!="100"){
  28. $convertParamAdd = " -resize ".$percentSize."x".$percentSize."%";
  29. $x = $x * ($percentSize/100);
  30. $y = $y * ($percentSize/100);
  31. $width = $width * ($percentSize/100);
  32. $height = $height * ($percentSize/100);
  33. }
  34.  
  35. $destinationFile = "demo-images/nature_copy.$convertTo";
  36. $convertString = IMAGE_MAGICK_PATH."convert $image_ref $convertParamAdd -crop ".$width."x".$height."+".$x."+".$y." $destinationFile";
  37. exec($convertString);
  38. echo "var w = window.open('$destinationFile','imageWin','width=".($width+30).",height=".($height+30).",resizable=yes');";
  39. }else{
  40. echo "alert('Error!');";
  41. }
  42. }
  43. ?>
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.