Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> imagecreatetruecolor потребляет памяти, Делаю для безопасности, в итоге проблема 
:(
    Опции темы
ArNic
Дата 9.2.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



использую такую функцию на хостинге:

Код

function imageresize($outfile,$infile,$neww=false,$newh=false,$quality=100){
        list($imgw,$imgh,$type)=getimagesize($infile);
        if($type==1) $im=imagecreatefromgif($infile);
        elseif($type==2) $im=imagecreatefromjpeg($infile);
        elseif($type==3) $im=imagecreatefrompng($infile);
        if(@$im){
            if($neww=='auto'){$neww=($newh/$imgh)*$imgw;}
            if($newh=='auto'){$newh=($neww/$imgw)*$imgh;}
            if(!$neww)$neww=$imgw;
            if(!$newh)$newh=$imgh;
            $im1=imagecreatetruecolor($neww,$newh);
            imagecopyresampled($im1,$im,0,0,0,0,$neww,$newh,imagesx($im),imagesy($im));
            imagejpeg($im1,$outfile,$quality);
            imagedestroy($im);
            imagedestroy($im1);
            return true;
        }
}

Для безопасности ресайзю и оригинальные картинки перед заливкой (которые превышают размер 2000 пикс.)
Получаю на выходе 
Цитата
PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 11264 bytes)

Т.к. скрипт на хостинге. Я не могу выделить больше памяти.

читал посты 
http://forum.vingrad.ru/topic-233887.html
http://forum.vingrad.ru/topic-139412.html

Вопрос :
Что откорректировать в функции, чтобы память не жрало так много. 

Это сообщение отредактировал(а) ArNic - 9.2.2010, 14:13
PM MAIL ICQ   Вверх
Fortop
Дата 9.2.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(ArNic @  9.2.2010,  12:56 Найти цитируемый пост)
Что откорректировать в функции, чтобы память не жрало так много. 

1. Уменьшить линейные размеры изображения.
2. не использовать цвета TrueColor (пользоваться обычным imagecreate)



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Ипатьев
Дата 9.2.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Fortop @  9.2.2010,  15:36 Найти цитируемый пост)
1. Уменьшить линейные размеры изображения.

как это?
Цитата(Fortop @  9.2.2010,  15:36 Найти цитируемый пост)
2. не использовать цвета TrueColor (пользоваться обычным imagecreate)

И получить на выходе бяку.
Это не вариант


PM MAIL   Вверх
Fortop
Дата 9.2.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Ипатьев @  9.2.2010,  14:42 Найти цитируемый пост)
как это?

не пытаться обрабатывать картинки 1000*1000 или 2000 пикселей как у ТС.
Ограничится теми размерами которые помещаются в имеющуюся память.

Цитата(Ипатьев @  9.2.2010,  14:42 Найти цитируемый пост)
И получить на выходе бяку.
Это не вариант

Да, не вариант.
Я не посмотрел что идет именно ресайз.

Есть еще один вариант.
Как палиатив - можно пользоваться существующими image-хостингами как сервисами и переложить функцию ресайза (а возможно и хранения) картинок на них.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Ипатьев
Дата 9.2.2010, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(ArNic @  9.2.2010,  13:56 Найти цитируемый пост)
Что откорректировать в функции, чтобы память не жрало так много. 

Если речь идет о том, чтобы привести картинку 3000х3000 к размеру 2000х2000, и ошибка вылетает уже на создании новой картинки, а даже не на ресайзе, то ничего.
можно вызвать  imagemagick через system()

я только не понял, при чем здесь безопасность

Это сообщение отредактировал(а) Ипатьев - 9.2.2010, 15:58
PM MAIL   Вверх
skyboy
Дата 9.2.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



если использовать для ресайза imgemagick, то там можно ограничить используюмую для ресайза память. 
PM MAIL   Вверх
IgorIV
Дата 9.2.2010, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Цитата(Ипатьев @  9.2.2010,  15:57 Найти цитируемый пост)
я только не понял, при чем здесь безопасность

Боится, что в комментариях в картинке можно написать вредный код, который потом исполнится на сервере.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.