2013-02-26 5 views
1

В настоящее время я использую реализацию php gd для изменения размеров изображений, которые постоянно исчерпывают память - довольно быстро. Я думаю, проблема заключается в php-функциях, таких как imagecreatefromstring и т. Д.Создание эскизов изображений с использованием php - без исчерпания памяти

Есть ли простая реализация для изменения размеров изображений, которые не используют эти функции, поэтому мне не нужно увеличивать лимит памяти php.ini?

+0

Может быть, есть утечка памяти в коде, но кто заботится :) (Покажите нам код), – AmazingDreams

ответ

1

GD не использует много памяти, поэтому у вас есть другие проблемы в коде.

Если вы изменяете размер нескольких изображений и не вызываете imagedestroy на только что созданном изображении, вы запускаете утечку памяти.

+0

Истинный цвет изображения может использовать 'ширина х высота х 4 х 'байты памяти. 'createimagefrom'' на 5-мегапиксельном изображении и ограничении памяти 20 МБ немедленно исчерпывает всю память. –

+0

Я знаю, но предел памяти по умолчанию в PHP5.3 составляет 128M, что, безусловно, подходит. Если ваш хост не поддерживает подходящий лимит памяти и не изменит его для вас, вам следует искать другого хостера. – Philipp

4

здесь является PHP функция для вас

function make_thumb($src, $dest, $desired_width,$desired_h) { 

    /* read the source image */ 
    $source_image = imagecreatefromjpeg($src); 
    $width = imagesx($source_image); 
    $height = imagesy($source_image); 

    $desired_height = $desired_h; 

    /* create a new, "virtual" image */ 
    $virtual_image = imagecreatetruecolor($desired_width, $desired_height); 

    /* copy source image at a resized size */ 
    imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); 

    /* create the physical thumbnail image to its destination */ 
    imagejpeg($virtual_image, $dest); 
} 
+1

Несмотря на то, что ваша версия очень немного отличается, вы должны действительно включить кредит в источник: https: // davidwalsh .name/create-image-thumbnail-php – Brett

+0

@Brett Ну, ты прав, я действительно не помню, откуда я получил код раньше, я скопировал его из проекта, в котором я его уже использую, я не уверен, что источник, с которым вы связаны, является источником в любом случае, возможно, он тоже получил его из другого места, и я сделал это. если я знаю источник, я бы связал его. – ImadBakir

Смежные вопросы