Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: imagecreatefrom... ограничение по объему

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Об ограничениях по объему изображений обрабатываемых функцией imagecreatefrom...
megaPanda
Отправлено: 28 Июня, 2009 - 13:14:47
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Зрасьте гуру программирования.

Ситуация такая:

При загрузки изображения весом 1,5 Мб функция:
$image_orig = imagecreatefromjpeg($_FILES["foto1"]["tmp_name"]); //загружаем оригинальное фото
порождает ошибку:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 10368 bytes) in.......

Вопрос:
Данная функция имеет ограничение по объему обрабатываемой информации?
Или это специфика конкретного PHP, установленного на сервере?

Подскажите, плиз, глупому медведю....
 
 Top
vitaliy_mad
Отправлено: 28 Июня, 2009 - 13:38:03
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




megaPanda пишет:
Или это специфика конкретного PHP, установленного на сервере?
да.. в php.ini можно измнить размер... параметр не помню... найду скину....
(Добавление)
memory_limit = 64M - php.ini
ini_set('memory_limit', '64M'); в скрипте
php_value memory_limit 64M - .htacces
 
 Top
megaPanda
Отправлено: 28 Июня, 2009 - 13:46:02
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Спасибо. А этот параметр конкретно для функций, работающих с графикой?

И еще такой вопрос:
1,5 МБ файл JPEG превращается в 32 метра чистой графики, с которой может PHP работать.
А нельзя ли каким то образом уменьшить данный размер?
Может есть что-нибудь кроме imagecreatefrom...?


Мне просто из тех хостинга ответили:

"
Собственно здесь всё написано:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 10368 bytes) in /home/autotamb/domains/auto-tamb ov.ru/public_html/admin/index.ph p on line 233

Не хватает памяти именно на обработку, и не 1.5, а 32Мб. Здесь, увы, помочь не можем - уменьшайте фото.

"

Я же не могу сам поменять php.ini?
А изменение только .htaccess не поможет?

(Отредактировано автором: 28 Июня, 2009 - 13:48:09)

 
 Top
vitaliy_mad
Отправлено: 28 Июня, 2009 - 13:47:59
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




megaPanda пишет:
Спасибо. А этот параметр конкретно для функций, работающих с графикой?
этовыделениепамяти для работы php-скрипта....

где то на форуме были функции изменения размеров картинки, может подойдет... поройся...
 
 Top
valenok
Отправлено: 28 Июня, 2009 - 14:34:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Ты фотографии со спутника обрабатываешь ?

Allowed memory size of 33554432 bytes exhausted (tried to allocate 10368 bytes)
У тебя скрипт основательно налево ходит.


-----
Truly yours, Sasha.
 
My status
 Top
megaPanda
Отправлено: 28 Июня, 2009 - 17:26:54
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Да вроде нигде не уходит....

PHP:
скопировать код в буфер обмена
  1. <?PHP if ($_FILES["foto"]["tmp_name"])
  2. {
  3. $size = getimagesize ($_FILES["foto"]["tmp_name"]);
  4. $width=$size[0];
  5. $height=$size[1];
  6. $image_p = imagecreatetruecolor (480, 360);
  7. $image_m = imagecreatetruecolor (120, 90);
  8. $image_orig = imagecreatefromjpeg($_FILES["foto"]["tmp_name"]);
  9. $foto_logo = imagecreatefrompng ("../Image/foto_logo.png");
  10. $c_black = imagecolorallocate ($foto_logo, 0, 0, 0);
  11. imagecolortransparent ($foto_logo, $c_black);
  12. imagecopyresized ($image_p, $image_orig, 0, 0, 0, 0, 480, 360, $width, $height);
  13. imagecopymerge ($image_p, $foto_logo, 360, 260, 0, 0, 85, 85, 40);
  14. imagecopyresized ($image_m, $image_orig, 0, 0, 0, 0, 120, 90, $width, $height);
  15. $file_x="../cars/bigfoto{$iden}_1.jpg";
  16. $file_m="../cars/ico_{$iden}.jpg";
  17. imagejpeg($image_p, $file_x, 70);
  18. imagejpeg($image_m, $file_m, 80);
  19. $foto = <<<OPE
  20. foto = "cars/bigfoto{$iden}_1.jpg", foto_dop = "cars/ico_{$iden}.jpg"
  21. OPE;
  22. $sh_foto = "../cars/bigfoto{$iden}_1.jpg";
  23. $sh_foto_dop = "../cars/ico_{$iden}.jpg";
  24.  
  25. }
  26. if ($_FILES["foto1"]["tmp_name"] <> NULL)
  27. {
  28. //Обработка второй фотографии
  29. $size = getimagesize ($_FILES["foto1"]["tmp_name"]);
  30. $width=$size[0];
  31. $height=$size[1];
  32. $image_p = imagecreatetruecolor (480, 360);
  33. $image_orig = imagecreatefromjpeg($_FILES["foto1"]["tmp_name"]);  
  34. imagecopyresized ($image_p, $image_orig, 0, 0, 0, 0, 480, 360, $width, $height);
  35. imagecopymerge ($image_p, $foto_logo, 360, 260, 0, 0, 85, 85, 40);
  36. $file_x="../cars/bigfoto{$iden}_2.jpg";
  37. imagejpeg($image_p, $file_x, 70);
  38. $foto1 = <<<OPE
  39.  foto1 = "cars/bigfoto{$iden}_2.jpg"
  40. OPE;
  41. $foto = $foto . ", " . $foto1;
  42. $sh_foto1 = "../cars/bigfoto{$iden}_2.jpg";
  43. //Конец обработки второй фотографии
  44. }
  45. if ($_FILES["foto2"]["tmp_name"] <> NULL)
  46. {
  47. //Обработка третей фотографии
  48. $size = getimagesize ($_FILES["foto2"]["tmp_name"]);
  49. $width=$size[0];
  50. $height=$size[1];
  51. $image_p = imagecreatetruecolor (480, 360);
  52. $image_orig = imagecreatefromjpeg($_FILES["foto2"]["tmp_name"]);
  53. imagecopyresized ($image_p, $image_orig, 0, 0, 0, 0, 480, 360, $width, $height);
  54. imagecopymerge ($image_p, $foto_logo, 360, 260, 0, 0, 85, 85, 40);
  55. $file_x="../cars/bigfoto{$iden}_3.jpg";
  56. imagejpeg($image_p, $file_x, 70);
  57. $foto2 = <<<OPE
  58.  foto2 = "cars/bigfoto{$iden}_3.jpg"
  59. OPE;
  60. $foto = $foto . ", " . $foto2;
  61. $sh_foto2 = "../cars/bigfoto{$iden}_3.jpg";
  62. //Конец обработки третей фотографии
  63. }


Отредактировано модератором: Champion, 29 Июня, 2009 - 09:04:54
 
 Top
valenok
Отправлено: 28 Июня, 2009 - 18:05:36
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Стоит поискать в двухсот строках кода выше.


-----
Truly yours, Sasha.
 
My status
 Top
megaPanda
Отправлено: 28 Июня, 2009 - 23:16:32
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




valenok пишет:
Стоит поискать в двухсот строках кода выше.


А что искать? Что может так съедать память?
Там в коде ничего сверхъестественного нет - запросы БД и условия, да и все. Никаких сложных вычислений и функций....

Процесс выдает ошибку именно в тот момент когда идет загрузка данных и jpeg файла.

Если картинки мелкие до 500-600 Кб, то все ок, а если больше, то иногда возникает ошибка...
 
 Top
valenok
Отправлено: 28 Июня, 2009 - 23:56:34
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




echo memory_get_usage(); по натыкай в скрипте. Найдешь где происходит скачок.
1,5 МБ файл JPEG не должен превращается в 32 метра

(Отредактировано автором: 28 Июня, 2009 - 23:57:49)



-----
Truly yours, Sasha.
 
My status
 Top
megaPanda
Отправлено: 29 Июня, 2009 - 09:12:03
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




valenok пишет:
echo memory_get_usage(); по натыкай в скрипте. Найдешь где происходит скачок.
1,5 МБ файл JPEG не должен превращается в 32 метра


Спасибо. Попробую.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB