Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Generowanie obrazków, tak aby szerokość i wysokość były takie same
Forum PHP.pl > Forum > Przedszkole
poxrimex
  1. <?php
  2. $source="bla.jpeg";
  3.  $max_x='140px';
  4.  $max_y='140px';
  5.  
  6. if(exif_imagetype($source) == IMAGETYPE_JPEG){
  7. $img_src = imagecreatefromjpeg($source);
  8. }elseif(exif_imagetype($source) == IMAGETYPE_GIF){
  9. $img_src = imagecreatefromgif($source);
  10. }elseif(exif_imagetype($source) == IMAGETYPE_PNG){
  11. $img_src = imagecreatefrompng($source);
  12. }else{
  13. die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  14. }
  15. $image_x = imagesx($img_src);
  16. $image_y = imagesy($img_src);
  17. if($image_x > $image_y){ //landscape
  18. $ratio = ($image_x > $max_x) ? $max_x/$image_x : 1;
  19. }else{ //portrait
  20. $ratio = ($image_y = $max_y) ? $max_y/$image_y : 1;
  21. }
  22. $new_x = $image_x*$ratio;
  23. $new_y = $image_y*$ratio;
  24. $new_img = imagecreatetruecolor($new_x, $new_y);
  25. imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_x, $new_y, $image_x, $image_y);
  26. if(exif_imagetype($source) == IMAGETYPE_JPEG){
  27. header('Content-type: image/jpeg');
  28. imagejpeg($new_img);
  29. }elseif(exif_imagetype($source) == IMAGETYPE_GIF){
  30. header('Content-type: image/gif');
  31. imagegif($new_img);
  32. }elseif(exif_imagetype($source) == IMAGETYPE_PNG){
  33. header('Content-type: image/png');
  34. imagepng($new_img);
  35. }
  36. ImageDestroy($img_src);
  37. ImageDestroy($new_img);
  38. ?>


W tym skrypcie są zachowane proporcje, a ja chciałbym aby właśnie to max width i height zamieniło się w szerokość i wysokość wymuszoną, czyli zawsze taką samą niezależną od obrazka. Pozdrawiam
Wieviór
Trochę popróbuj sam. Tutaj masz skrypt, który będzie Ci ratio zachowywał, napisz taki, który po prostu zmieni szerokość i wysokość obrazka, na jakąś wybraną.
poxrimex
  1. <?php
  2. $orginalny_obrazek='abc.jpg';
  3. $docelowa_szerokosc='100';
  4. $docelowa_wysokosc='100';
  5. function zmiana_rozmiaru($orginalny_obrazek,$docelowa_szerokosc,$docelowa_wysokosc){
  6.  
  7. // Pobranie orginalnych parametrów i kalkulacja skali
  8. list($szerokosc, $wysokosc) = getimagesize($orginalny_obrazek);
  9. $xskala=$szerokosc/$docelowa_szerokosc;
  10. $yskala=$wysokosc/$docelowa_wysokosc;
  11.  
  12. // Kalkulacja nowego rozmiaru
  13. if ($yskala>$xskala){
  14. $nowa_szerokosc = round($szerokosc * (1/$yskala));
  15. $nowa_wysokosc = round($wysokosc * (1/$yskala));
  16. }
  17. else {
  18. $nowa_szerokosc = round($szerokosc * (1/$xskala));
  19. $nowa_wysokosc = round($wysokosc * (1/$xskala));
  20. }
  21.  
  22. // Zmiana rozmiaru orginalnego obrazu
  23. $obraz_zmiana_wielkosci = imagecreatetruecolor($nowa_szerokosc, $nowa_wysokosc);
  24. $obrazek_tymczasowy  = imagecreatefromjpeg ($orginalny_obrazek);
  25. imagecopyresampled($obraz_zmiana_wielkosci, $obrazek_tymczasowy, 0, 0, 0, 0, $nowa_szerokosc, $nowa_wysokosc, $szerokosc, $wysokosc);
  26.  
  27. return $obraz_zmiana_wielkosci;
  28. }
  29. ?>


TAKI SKRYPT NIC MI NIE ZWRACA

nie wiem z jakiego powodu
Wieviór
A co on ma Ci wywoływać skoro nie wykonujesz nawet tej funkcji?
poxrimex
no to wróćmy do tego pierwszego skryptu chciałbym aby on wyświetlał obrazki o szerokości i wysokości tylko 120px
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.