Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]]gd2 wyświetlanie plików z określnym formatem
Forum PHP.pl > Forum > Przedszkole
Majzel
  1. <?php
  2. $filename = 'zdjecie.jpg';
  3.  
  4. // Set a maximum height and width
  5. $width = 200;
  6. $height = 200;
  7.  
  8. // Content type
  9. header('Content-typ: image/jpeg');
  10.  
  11. // Get new dimensions
  12. list($width_orig, $height_orig) = getimagesize($filename);
  13.  
  14. $ratio_orig = $width_orig/$height_orig;
  15.  
  16. if ($width/$height > $ratio_orig) {
  17.   $width = $height*$ratio_orig;
  18. } else {
  19.   $height = $width/$ratio_orig;
  20. }
  21.  
  22. // Resample
  23. $image_p = imagecreatetruecolor($width, $height);
  24. $image = imagecreatefromjpeg($filename);
  25. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  26.  
  27. // Output
  28. imagejpeg($image_p, null, 100);
  29. ?>


Taki kod jak powyżej, niby wszystko ok, no bo działa, kod z manuala php, jednak zastanawia mnie, w jaki sposób by to mogło działać, gdyby tak mógł ten skrypt obsługiwać każde rozszerzenie oprócz .jpeg ?
Jak by go przerobić?
Tzn. wiem, że można by to zrobić instrukcją warunkową if else, na zasadzie sprawdzania mime/type, jednak czy jest inny sposób, który wyświetlał by dany obrazek, a nie tylko np. jpeg? a wiec coś zamiast tych funkcji imagejpeg,image gif, żeby działało na kazdy obrazek? I czy to ma sens ?
Lejto
sens nie wiem czy ma ale kiedyś pisałem coś podobnego i dałęm on na gif itp i switcha kon na to i na tamto typ pliku do zmiennej i działało
gox
najprosciej:
  1. <?php
  2. $filename = 'zdjecie.jpg';
  3. $ext = preg_match('#.(.*?)$#', rtrim($filename));
  4. $ext = $ext[1];
  5.  
  6. // Set a maximum height and width
  7. $width = 200;
  8. $height = 200;
  9.  
  10. // Content type
  11. header('Content-ty: image/'.$ext);
  12.  
  13. // Get new dimensions
  14. list($width_orig, $height_orig) = getimagesize($filename);
  15.  
  16. $ratio_orig = $width_orig/$height_orig;
  17.  
  18. if ($width/$height > $ratio_orig) {
  19.  $width = $height*$ratio_orig;
  20. } else {
  21.  $height = $width/$ratio_orig;
  22. }
  23.  
  24. // Resample
  25. $image_p = imagecreatetruecolor($width, $height);
  26. $image = imagecreatefromstring(file_get_contents($filename));
  27.  
  28. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  29.  
  30. // Output
  31. imagegif($image_p, null, 100);
  32. ?>

tylko ze to tez jest troche oglupianie, plik wylatuje teoretycznie jako gif.. ale robiony jest ze stringu jpega... w kazdym razie dziala i zachowuje transparentosc smile.gif
p.s dodaj jeszcze ob_start() zeby content len dac w naglowku
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.