Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Skrypt resizeu obrazkow, Dziwne zachowanie przy jpg z telefonu.
thornag
post 26.07.2006, 10:20:02
Post #1





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował thornag 26.07.2006, 10:23:27


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Aure
post 26.07.2006, 10:58:42
Post #2





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 3.05.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Aure 26.07.2006, 11:02:47


--------------------


Go to the top of the page
+Quote Post
thornag
post 26.07.2006, 11:29:44
Post #3





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


@aure => Sprawdzanie typu MIME zawsze zwraca image/jpeg

Dodanie nowych typow, czy tez stalych nie przynioslo oczekiwanych rezultatow.

Ten post edytował thornag 26.07.2006, 11:37:56


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 21:10