PHP GD - 输出和保存之间的性能/时间差

时间:2014-09-25 21:53:16

标签: php performance gd

使用php和gd - 在性能或时间之间执行的更好:

输出图像

header('Content-Type: image/png');
imagepng($image);

或者将图像保存到服务器(本地服务器或Amazon s3)

imagepng($image, 'new_image.png');

1 个答案:

答案 0 :(得分:0)

嗯,生成图像数据所需的时间没有差别,因为在两种情况下它都是相同的。

但是,当您将图像保存到本地磁盘时,操作可能比将数据发送到世界某处的客户端浏览器时更快地终止。

然而,PHP的重点是在浏览器中呈现内容,所以我猜你会显示存储的文件,否定你从存储图像中获得的速度的任何好处。

所以,如果你想在两种情况下都显示图像,我想最好直接从PHP脚本输出图像。

另一方面,如果您不止一次使用图像,那么您应该保存它,并使用保存的版本,因为生成图像本身需要PHP时间。

如果你想生成一次,并且多次使用,你可以使用这段PHP代码:

<?php
// this is where it is stored
$filename = 'my_image.png';

// test if file exists
if (!file_exists($filename))
{
  // if does not exist, make it
  <... your code for making the image ...>
  // store to disk
  imagepng($image,$filename);
  // image is not needed anymore
  imagedestroy($image);
}  

// header
header('Content-Type: image/png');
// get file from the disk
readfile($filename);
?>

如果您已经更改了图像并且想要重新生成它,只需从磁盘中删除该图像。这是一个非常基本的例子,您可以根据自己的需要进行构建。