PHP: отображать изображение с помощью passthru лучше, чем создавать изображение на диске - PullRequest
0 голосов
/ 12 декабря 2010

Мне нужно отобразить модифицированное изображение, у меня есть 2 варианта, которые я вижу создать временное изображение, которое будет изменено, а затем удалить его или создать изображение на лету и показать его с помощью passthru например:

$photo="foo.jpg";
$THUMB_SZ  = 125;
$THUMB_PRESZ  = $THUMB_SZ * 2;
$QUALITY = 87;
$convert = "/usr/bin/convert";
$command = "$convert -size $THUMB_PRESZ".'x'."$THUMB_PRESZ \"$photo\"" .
        " -thumbnail $THUMB_SZ".'x'."$THUMB_SZ" .
        " -unsharp 0.2x0.6+1.0" .
        " -quality $QUALITY JPG:-";

header("Content-type: image/jpeg");
passthru($command, $retval);

and then in the html part <img src="foo.php">

Ответы [ 3 ]

2 голосов
/ 13 декабря 2010

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

  • Сохраняет его создание более одного раза.* С правильными заголовками кэширования вы можете сохранить передачу данных одному и тому же клиенту более одного раза.

Если вам действительно нужно показать это только один раз, то вы можете сделать это, используяpassthrough (или, если вы заинтересованы в производительности, используйте привязки PHP Imagick, это быстрее, чище и безопаснее, чем использование imagick через командную строку).

0 голосов
/ 13 декабря 2010

Если бы я действительно заботился о производительности, я бы избегал случайного выбора.Он будет без необходимости выполнять внешнюю команду каждый раз, когда пользователь запрашивает изображение.Если вы используете временное изображение и изменили ссылку img src на временное изображение, только веб-сервер получит изображение и отправит его пользователю, никакой PHP или конвертация не будут задействованы.Конечно, я предполагал, что изображение меняется не очень часто.

0 голосов
/ 13 декабря 2010

Если вам не нужно сохранять измененное изображение, тогда использование passthru сохраняет запись на диск и удаление.Ваше приложение, вероятно, не чувствительно к скорости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...