3

我有一个 .php 文件,它应该加载图像以显示在 img 标记
(即<img src="the_file.php?which=0"/>)中。它看起来像这样:

<?php
    ob_clean();

    header("Content-type: image/png");

    include_once("util.php");

    //Do a simple calculation to get $name from (int)$_GET["which"];

    $im = imagecreatefrompng("protected_directory/".$name.".png");

    imagepng($im,NULL,0,NULL);

    imagedestroy($im);

    ob_end_flush();
?>

它可以正常工作,但图像加载速度比直接加载要慢得多
(即<img src="protected_directory/the_name.png"/>,“the_name”的计算方式与 PHP 文件中的计算方式相同,但我不能这样做,因为 protected_directory 不是世界可读的) .

我的问题是,为什么这突然变得这么慢?这不是一个很大的图像,但也不是非常小。

4

3 回答 3

3

如果您只是显示现有文件,请使用readfile()将其输出到浏览器。无需为此创建可编辑 GD 对象的所有开销。

于 2012-08-11T01:48:59.513 回答
1

imagepng 众所周知,速度很慢,如果您需要使用 PHP 脚本输出图像,请使用如下代码:

$filename = md5(time() . mk_rand());
imagepng($im, $filename);
echo file_get_contents($filename);
于 2012-08-11T01:42:04.323 回答
1

作为另一个答案,我发现您可以使用第三个参数来压缩图像(PNG 使用 zlib)。将其设置为 9 与其他解决方案一样有效。

于 2012-08-11T01:58:15.583 回答