PHP:用passthru显示图像比在磁盘中创建图像更好

时间:2010-12-12 19:23:17

标签: php image

我需要显示modyfied图像,我有两个选项,因为我看到它 创建已修改的临时图像然后将其删除 或者动态创建图像并使用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 个答案:

答案 0 :(得分:2)

如果您需要多次创建图像,那么我建议您在磁盘上创建文件,原因有两个

  • 它不止一次地保存它。
  • 使用正确的缓存标头,您可以保存多次将数据传输到同一客户端。

如果你真的只需要展示一次,那么你可以使用passthrough(或者,如果你对性能感兴趣,使用PHP Imagick绑定,它比使用imagick更快,更清洁和更安全)命令行)。

答案 1 :(得分:0)

如果您不需要保留修改后的图像,那么使用passthru会保存磁盘写入和删除。你的应用可能不是速度敏感的。

答案 2 :(得分:0)

如果我真的关心性能,我会避免选择passthru。每次用户请求图像时,它将不必要地执行外部命令。如果您使用临时图像,并将img src引用更改为临时图像,则只有Web服务器将检索图像并将其发送给用户,不会涉及PHP或转换。当然,我假设图像不经常更改。