【发布时间】:2011-11-13 20:16:56
【问题描述】:
我有一个水印脚本,你们中的一些人可能已经从我之前的一个问题中看到过:
<?php
$imagesource = $_GET['path'];
$filetype = substr($imagesource,strlen($imagesource)-4,4);
$filetype = strtolower($filetype);
if($filetype == ".gif") $image = @imagecreatefromgif($imagesource);
if($filetype == ".jpg") $image = @imagecreatefromjpeg($imagesource);
if($filetype == ".png") $image = @imagecreatefrompng($imagesource);
if (!$image) die();
$watermark = @imagecreatefrompng('watermark_'.(imagesx($image) <= 1100 ? "port" : "lans").'.png');
$imagewidth = imagesx($image);
$imageheight = imagesy($image);
$watermarkwidth = imagesx($watermark);
$watermarkheight = imagesy($watermark);
$startwidth = (($imagewidth - $watermarkwidth)/2);
$startheight = (($imageheight - $watermarkheight)/2);
imagecopy($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth,
$watermarkheight);
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
?>
脚本运行良好,但是当我的客户端上传超过 2000 像素 X 2000 像素(或周围的东西)的图片时,脚本不会输出任何内容,甚至不会出现错误。但是,例如,当我将其减小到 1100 像素 X 800 像素时,此脚本会输出并显示图像。这有什么原因吗?
是否有办法诊断导致此问题的原因并因此找到解决方案或在上传时自动调整图像大小?
这是我目前拥有的上传脚本:
<?php
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("uploads/" . $_FILES["file"]["name"]))
{
echo "<h3>".$_FILES["file"]["name"] . " already exists. </h3>";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"uploads/" . $_FILES["file"]["name"]);
echo "Stored in: " . "uploads/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "<h3>Invalid file</h3>";
}
?>
【问题讨论】:
-
你检查你的错误日志了吗?听起来您可能会达到上传大小限制。
-
不,因为它上传它只是不显示
-
不存在错误日志我的服务器似乎没有提供我需要的信息,但这是大多数图像的内存问题
标签: php dynamic image watermark