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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> оптимизировать ф-ю по работе с изображением 
:(
    Опции темы
FRAGNATIC
Дата 27.6.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


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

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



Код

    function processImage($file) {
        if ($this->id) {
            if (file_exists($file)) {
                if (file_exists(IMAGE_PATH.$this->id.".jpg")) {
                    @unlink(IMAGE_PATH.$this->id.".jpg");
                }
                $res = copy($file, IMAGE_PATH.$this->id.".jpg");
                if ($res) {
                    $user = $this->getUser();
                    $info = getimagesize(IMAGE_PATH.$this->id.".jpg");
                    $this->resolution = $info[0]*$info[1];
                    $im_src = imagecreatefromjpeg(IMAGE_PATH.$this->id.".jpg");
                    $im_wm = imagecreatefrompng(DOC_ROOT."/img/watermark.png");
                    for ($i = 1; $i <= 3; $i++) {
                        if ($this->isHorizontal()) {
                            $w = constant("PREVIEW".$i."_WIDTH");
                            $h = floor(($info[1] * $w) / $info[0]); 
                        } else {
                            $h = constant("PREVIEW".$i."_HEIGHT");
                            $w = floor(($info[0] * $h) / $info[1]); 
                        }
                        $im = imagecreatetruecolor($w, $h);
                        imagecopyresampled($im, $im_src, 0, 0, 0, 0, $w, $h, $info[0], $info[1]);
                        if ($w > 260 && $h > 90) {
                            imagecopy($im, $im_wm, floor(($w-257)/2), floor(($h-89)/2), 0, 0, 257, 89);
                            $white = imagecolorallocate ($im, 255, 255, 255);
                            imagettftext ($im, 12, 0, 20, $h - 20, $white, DOC_ROOT."/img/trebuc.ttf", "ID: ".$this->id."  |  (c) ".$user->name." ".$user->surname);
                        }
                        if (file_exists(PREVIEW_PATH.$this->id."_".$i.".jpg")) {
                            @unlink(PREVIEW_PATH.$this->id."_".$i.".jpg");
                        }
                        
                        imagejpeg($im, PREVIEW_PATH.$this->id."_".$i.".jpg", PREVIEW_QUALITY);
                        imagedestroy($im);
                    }
                    imagedestroy($im_src);
                }
            }
        }
        return false;
    }

Функция создаёт несколько уменьшеных экземпляров картинки для пред просмотра, на один из них накладывает водяной знак и пишет имя автора на картинке.
в строке $im_src = imagecreatefromjpeg(IMAGE_PATH.$this->id.".jpg");
часто не хватает памяти и вылетает ошибка типа 
Цитата
Fatal error: Allowed memory size of 26214400 bytes exhausted (tried to allocate 2816 bytes) in ........

конечно увелечение memory_limit помогло, но всё ровно мне кажется надо как-то уменьшить нагрузку. 

 

Это сообщение отредактировал(а) FRAGNATIC - 27.6.2006, 20:22
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.

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


 




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


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

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