2015-06-04 35 views
0

我希望用户将他们的图像上传到页面,然后压缩&裁剪它们。下面给出的是php代码图像压缩,它压缩jpeg并下载压缩版本。这工作正常3mb(4567 * 2755),但不是上面的文件。Php图像压缩和裁剪不适用于3mb以上jpeg

编辑:

出现在服务器错误日志中的信息是

[04君2015年8点10分07秒欧洲/巴黎] PHP的警告:POST的Content-Length的4213306个字节超过3145728个字节在未知线极限0

请帮助:-(

<?php 
$name = ''; 
$type = ''; 
$size = ''; 
$error = ''; 
function compress_image($source_url, $destination_url, $quality) 
{ 
    $info = getimagesize($source_url); 
if ($info['mime'] == 'image/jpeg') 
    $image = imagecreatefromjpeg($source_url); 
elseif ($info['mime'] == 'image/gif') 
    $image = imagecreatefromgif($source_url); 
elseif ($info['mime'] == 'image/png') 
    $image = imagecreatefrompng($source_url); 
    imagejpeg($image, $destination_url, $quality); 
    return $destination_url; 
} 

if ($_POST) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ $error = $_FILES["file"]["error"]; 
} 
else if (($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/pjpeg")) 
{ $url = 'destinationx.jpg'; 
$filename = compress_image($_FILES["file"]["tmp_name"], $url, 40); 
$buffer = file_get_contents($url); /* Force download dialog... */ 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); /* Don't allow caching... */ header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); /* Set data type, size and filename */ 
header("Content-Type: application/octet-stream"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: " . strlen($buffer)); 
header("Content-Disposition: attachment; filename=$url"); /* Send our file... */ 
echo $buffer; } 
else { $error = "Uploaded image should be jpg or gif or png"; } } ?> 
<html> 
    <head> 
     <title>Php code compress the image</title> 
    </head> 
<body> 
<div class="message"> 
    <?php if($_POST){ if ($error) { ?> 
    <label class="error"><?php echo $error; ?></label> 
    <?php } } ?> 
</div> 

    <fieldset class="well"> <legend>Upload Image:</legend> 
<form action="" name="myform" id="myform" method="post" enctype="multipart/form-data"> 
    <ul> 
    <li> 
     <label>Upload:</label> 
     <input type="file" name="file" id="file"/> 
    </li> 
     <li> 
      <input type="submit" name="submit" id="submit" class="submit btn-success"/> 
     </li> 
    </ul> 
</form> 
</fieldset> 
</body> 
</html> 
+0

服务器错误日志里有什么? –

+0

没有服务器错误日志,服务器上传照片并不会返回任何内容 –

+0

将会有服务器错误日志。这是你的服务器上的文件。它的位置各不相同,所以我不知道你的位置。找到它。它会告诉你出了什么问题。 –

回答

0

您的PHP配置将POST数据的大小限制在3Mb左右。要加载更大的文件,您需要更改PHP.INI中的一些项目。您可以使用php_ini_loaded_file()来确定PHP.INI的位置 - 请参阅this answer

post_max_size设置POST的最大大小。这指的是所有 POST上传的文件中的数据和任何表单变量。这需要提高到大约5Mb(如果要处理更大的文件,则需要更大)

您可能还需要将upload_max_filesize设置为大一些,但小于post_max_size。再次确定您可能需要的文件大小并进行相应设置。

这些值通常在系统范围的PHP.INI文件中设置。有些可通过.htaccess或应用程序目录中的PHP.INI文件进行配置;其他人可以使用ini_set()以编程方式进行设置。我所链接的参考资料会告诉你可以在哪里设置不同的参数。配置模式设置的参考是here

请注意,一些托管公司限制您可以在他们的廉价(或免费)托管软件包上做什么。如果您使用的是免费套餐,您可能无法更改任何内容。没有工作:获得更好的主持人,并在必要时付款。