使用imagepng后出现大幅滞后

时间:2012-01-09 18:31:45

标签: php image-processing

我有一个用户上传图像文件的场景。我剥去背景颜色(定义为左上角的颜色)...并使用imagepng保存到文件。

我最初尝试回复一些直接调用该文件名的html,但是图像显示需要长达7分钟(这是一个6k文件,没什么特别的)。我读到你不应该尝试在同一个请求中使用发布的数据,因此,我没有输出图像,而是将其更改为第二页的链接,这将获得图像。

但同样的滞后发生。我没有做太多的图像处理,所以感谢任何指导我出错的地方,或者加快速度的方法。我最终的目标是用户可能一次上传10多张图片

以下是主要代码,viewing_page.html仅为<img src="target.png"/>

<?php
if($_FILES['test']['tmp_name']){
    //some validation is necessary, this is just a proof of concept for a friendly user test
    if($_FILES['test']['type']=="image/png"){
        $im = imagecreatefrompng($_FILES['test']['tmp_name']);
    }
    if(($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")){
        $im = imagecreatefromjpeg($_FILES['test']['tmp_name']);
    }
    if($_FILES['test']['type']=="image/gif"){
        $im = imagecreatefromgif($_FILES['test']['tmp_name']);
    }
    //determine background RGB
    $rgb = imagecolorat($im, 0, 0);
    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b = $rgb & 0xFF;
    $background = imagecolorallocate($im, $r, $g, $b);
    // Make the background transparent
    imagecolortransparent($im, $background);
    imagepng($im,'target.png');
    imagedestroy($im);
    echo "<a href=\"viewing_page.html\">View</a>";
    //echo "<img src=\"target.png\"/>"; //-----------this was my first (and preferred) approach
    }
else{
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body bgcolor="#00CCFF">
    <form action="" method="post" enctype="multipart/form-data">
    <input name="test" type="file" />
    <input type="submit" value="Submit" />
    </form>
    </body>
</html>
    <?php
}
?>

1 个答案:

答案 0 :(得分:1)

imagepng是否真的需要很长时间来生成.png文件,或者您的网络服务器在7分钟之前没有提供图像?在我的系统(Linux,PHP 5.3.6)和您的代码上,图像立即可用。