我有一个用户上传图像文件的场景。我剥去背景颜色(定义为左上角的颜色)...并使用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
}
?>
答案 0 :(得分:1)
imagepng是否真的需要很长时间来生成.png文件,或者您的网络服务器在7分钟之前没有提供图像?在我的系统(Linux,PHP 5.3.6)和您的代码上,图像立即可用。