Изменение размера изображения PHP не работает.Есть ли ограничение на размер файла? - PullRequest
1 голос
/ 23 июля 2010

Я использую простой класс менеджера изображений и следующий код:

<?php
include('SimpleImage.php');
$image = new SimpleImage();
$image->load($target_path);
if($image->getWidth() > 500) {
    $image->resizeToWidth(500);
    echo "<p>Image Resized</p>";
} else echo "<p>Image did not need to be resized.</p>";
$image->save($target_path);
echo "<p>Image Saved</p>";
?>

Размер изображения успешно изменяется, когда я загружаю изображение шириной 700, но когда я загружаю действительно большое изображение (ширина ~ = 2300), оно не работает, и я не вижу ничего из моего echo сообщений.

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

Ответы [ 3 ]

6 голосов
/ 23 июля 2010

Скорее всего, вы используете настройку memory_limit, указанную в php.ini.

Добавьте error_reporting(E_ALL); в ваш скрипт и посмотрите, что выводится.

Используйте phpinfo() дляузнайте текущую настройку ограничения памяти.

Иногда ее можно изменить с помощью ini_set("memory_limit", xyz).В противном случае вам нужно изменить php.ini.

Изображение размером 2300 x 2300 пикселей займет не менее

2300 x 2300 x 3 = 15,870,000

= примерно 16 мегабайт оперативной памяти (или 2300 x 2300 x4, если есть альфа-канал), так что я бы сказал, что вам понадобится как минимум 24 мегабайта ОЗУ на сценарий, чтобы это работало хорошо.Может быть, даже больше.

1 голос
/ 23 июля 2010

Проверьте ваш журнал ошибок.Скорее всего, вы превышаете лимит памяти (memory_limit в настройках ini).Попробуйте добавить ini_set('memory_limit', '32M'); в начало файла.

И чтобы напрямую ответить на ваш вопрос, нет ограничений на размер внутренних функций ...

1 голос
/ 23 июля 2010

Существует ограничение на размер загружаемого файла; Вы можете установить его в своем php.ini:

upload_max_filesize
post_max_size
...