Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Opytmalizacja operacji, w trakcie przetwarzania obrazka zmiana rozdzielczości
smarcz
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

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


Witam!

Problem polega na optymalizacji operacji w trakcie przetwarzania obrazka - zmiana rozdzielczosci i jego ponowne zapisanie! Przesyłanych pól w formularzu jest 7. Problem zaczyna się kiedy wysyłam pliki graficzne których wielkości przekracza 256 kb - i jest ich kila w pewnym momencie pojawia się błąd o treści:
Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 8704 bytes) in /home/.../ftp/.../spr3.php on line 101

Serwer na którym pracuje ma wprowadzone ograniczenie 20MB.

Może znacie sposób obróbki obrazka inny niż ja - lub jak podzielić mój skrypt na operacje aby się zmieścić w limicie??

Oto kod!:

  1. function k1(){
  2. ?>
  3. <FORM name="f1" METHOD="POST" ACTION="<?php echo $PHP_SELF ?>" enctype="multipart/form-data">
  4. <INPUT TYPE="HIDDEN" NAME="action" VALUE="d1">
  5.  
  6. <input type="file" name="zdj_p1" size="20">
  7. <div align="center">
  8. <input type="submit" name="w" value="Zapisz">
  9. <input type="reset" value="Skasuj">
  10. </div>
  11. </FORM>
  12. <?
  13. }
  14. function d1(){
  15.  
  16. $zdj1 = $_FILES['zdj_p1'];
  17.  
  18. $stos=0;
  19.  
  20. if(!empty($zdj1)){
  21. $stos++;
  22.  
  23. //Zapisywanie wartości zdjęcia do zmiennych
  24. $nazwa = $_FILES['zdj_p1']['name'];
  25. $typ  = $_FILES['zdj_p1']['type'];
  26. $size = $_FILES['zdj_p1']['size'];
  27. $plik = $_FILES['zdj_p1']['tmp_name'];
  28.  
  29. $wielkosc = 200000;//Wielkość przesyłanego pliku - 200KB
  30. $x = 600;//Szerokość w Pixelach
  31.  
  32. $filename = '';
  33. $filename .= $stos;
  34. $filename .= date("YmdHis");
  35. $filename .= $id;
  36. $filename .= 'o';
  37.  
  38. $mojaNazwa = $filename.'.jpg';
  39.  
  40. $sciezka = 'img/';
  41. //Przetwarzanie obrazka z formatu jpg i jpeg
  42. if (ereg("image/jpeg", $typ)){
  43. echo "to jest JPG<br>";
  44.  
  45. $zdj = ImageCreateFromJpeg($plik);
  46. $zdjx = ImageSX($zdj);
  47. $zdjy = ImageSY($zdj);
  48.  
  49. $y = ceil($zdjy*($x/$zdjx));
  50. $nowezdj = imagecreatetruecolor($x, $y);
  51. imagecopyresized($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
  52. imagejpeg($nowezdj, $sciezka . $mojaNazwa ,100);
  53. }
  54.  
  55. //Przetwarzanie obrazka z formatu gif
  56. elseif(ereg("image/gif", $typ)){
  57. echo "to jest GIF<br>";
  58.  
  59. $zdj = ImageCreateFromGIF($plik);
  60. $zdjx = ImageSX($zdj);
  61. $zdjy = ImageSY($zdj);
  62.  
  63. $y = ceil($zdjy*($x/$zdjx));
  64. $nowezdj = imagecreatetruecolor($x, $y);
  65. imagecopyresized($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
  66. imagejpeg($nowezdj, $sciezka . $mojaNazwa ,100);
  67. }
  68.  
  69. //Przetwarzanie obrazka z formatu png
  70. elseif(ereg("image/png", $typ)){
  71.  
  72. $zdj = ImageCreateFromPng($plik);
  73. $zdjx = ImageSX($zdj);
  74. $zdjy = ImageSY($zdj);
  75.  
  76. $y = ceil($zdjy*($x/$zdjx));
  77. $nowezdj = imagecreatetruecolor($x, $y);
  78. imagecopyresized($nowezdj,$zdj,0,0,0,0,$x,$y,$zdjx,$zdjy);
  79. imagejpeg($nowezdj, $sciezka . $mojaNazwa ,100);
  80. }
  81. else{
  82. echo "Niepoprawny format pliku<br>";
  83. }
  84. }
  85.  
  86. }
  87. ?>


a to wynik działania tego formularza:

array (
'action' => 'd1',
'w' => 'Zapisz',
)

array (
'zdj_p1' =>
array (
'name' => 'list motywacyjny1.jpg',
'type' => 'image/jpeg',
'tmp_name' => '/tmp/php9Izb0I',
'error' => 0,
'size' => 258787,
),
'zdj_p2' =>
array (
'name' => 'List[Andrzej].GIF',
'type' => 'image/gif',
'tmp_name' => '/tmp/phpjCXT0F',
'error' => 0,
'size' => 183603,
),
'zdj_1' =>
array (
'name' => 'error.jpg',
'type' => 'image/jpeg',
'tmp_name' => '/tmp/phpiTN7n4',
'error' => 0,
'size' => 365525,
),
'zdj_2' =>
array (
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => 4,
'size' => 0,
),
'zdj_3' =>
array (
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => 4,
'size' => 0,
),
'zdj_4' =>
array (
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => 4,
'size' => 0,
),
'zdj_5' =>
array (
'name' => '',
'type' => '',
'tmp_name' => '',
'error' => 4,
'size' => 0,
),
)

Nazwa - list motywacyjny1.jpg
Typ - image/jpeg
Wielko�ć kb - 258787
to jest JPG

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 8704 bytes) in /home/.../ftp/.../spr3.php on line 101


Ten post edytował smarcz 26.02.2007, 13:48:50
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.09.2025 - 07:49