Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Skrypt resizeu obrazkow
Forum PHP.pl > Forum > PHP
thornag
Witam, problem jest nastepujacy.

Mam skrypt do resizu obrazkow...

  1. <?php
  2. // File and new size
  3. $filename = $_REQUEST['image'];
  4. $max_width = $_REQUEST['max_width'];
  5. $max_height = $_REQUEST['max_height'];
  6. if (!$max_width)
  7. $max_width = 150;
  8. if (!$max_height)
  9. $max_height = 150;
  10. $size = GetImageSize($filename);
  11. $width = $size[0];
  12. $height = $size[1];
  13.  
  14. // Content type
  15. header('Content-type: '.$size['mime']);
  16.  
  17.  
  18.  
  19.  
  20. $x_ratio = $max_width / $width;
  21. $y_ratio = $max_height / $height;
  22.  
  23. //Resize
  24. if ( ($width <= $max_width) && ($height <= $max_height) ) {
  25. $newwidth = $width;
  26. $newheight = $height;
  27. }
  28. elseif (($x_ratio * $height) < $max_height) {
  29. $newheight = ceil($x_ratio * $height);
  30. $newwidth = $max_width;
  31. }
  32. else {
  33. $newwidth = ceil($y_ratio * $width);
  34. $newheight = $max_height;
  35. }
  36.  
  37. //Output
  38. $thumb = imagecreatetruecolor($newwidth, $newheight);
  39. switch($size['mime']) {
  40. case "image/gif":
  41. $source = imagecreatefromgif($filename);
  42. imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  43. imagegif($thumb);
  44. break;
  45. case "image/jpeg":
  46. $source = imagecreatefromjpeg($filename);
  47. imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  48. imagejpeg($thumb);
  49. break;
  50. case "image/pjpeg":
  51. $source = imagecreatefromjpeg($filename);
  52. imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  53. imagejpeg($thumb);
  54. break;
  55. case "image/png":
  56. $source = imagecreatefrompng($filename);
  57. imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
  58. imagejpng($thumb);
  59. break;
  60.  
  61. }
  62.  
  63.  
  64.  
  65. ?>


Krotko mowiac w zalezonosic od typu MIME dobieram funkcje tworzaca obrazek.

Problem polega na tym ze zdjecia z telefonu komorkowego nie sa przetwarzane przez skrypt. Typu MIME plikow to image/jpeg (sprawdzalem kilkakrotnie i z roznymi plikami)

Output komendy file z kosnoli...

Pliki z telefonu...

Kod
[root@92256-www1 images]# file image.jpg
image.jpg: JPEG image data, JFIF standard 1.01
[root@92256-www1 images]# file Image064.jpg
Image064.jpg: JPEG image data, JFIF standard 1.01


Plik z kompa

Kod
[root@92256-www1 images]# file avatar.jpg
avatar.jpg: JPEG image data, JFIF standard 1.01


Jak widac tutaj tez sie niczym nie roznia, a pierwsze dwa nie sa przez skrypt wyswietlane, avatar.jpg natomiast smiga jak pokrecony tongue.gif

Dodam jeszcze ze po otworzeniu zdjecia w photoshopie i zapisaniu go jako jpg wszystko jest w porzadku smile.gif

A zeby nie bylo dodam jesio co file mowi na obrazek z photoshopa....

Kod
[root@92256-www1 images]# file image.jpg
image.jpg: JPEG image data, JFIF standard 1.02


Roznica tylko(albo az) w standardzie.

Pomysly dlaczego obrazki sie nie wyswietlaja ?
Aure
Spróbuj w ten sposób, osobiście spotkałem się z trzema typami mime dla jpg:

  1. <?php
  2. switch($size['mime']) {
  3. case "image/gif":
  4. (...)
  5. break;
  6. case "image/jpeg":
  7. case "image/jpg":
  8. case "image/pjpeg":
  9. (...)
  10. break;
  11. case "image/png":
  12. (...)
  13. break;
  14.  
  15. }
  16. ?>

Względnie skorzystaj ze stałych zdefiniowanych w php:

  1. <?php
  2. switch($size['mime']) {
  3. case IMAGETYPE_GIF:
  4. (...)
  5. break;
  6. case IMAGETYPE_JPEG:
  7. (...)
  8. break;
  9. case IMAGETYPE_PNG:
  10. (...)
  11. break;
  12.  
  13. }
  14. ?>
thornag
@aure => Sprawdzanie typu MIME zawsze zwraca image/jpeg

Dodanie nowych typow, czy tez stalych nie przynioslo oczekiwanych rezultatow.
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.