duanlei5339 2015-06-04 05:15
浏览 20

Php图像压缩和裁剪不适用于3mb以上的jpeg

I want people to upload their images to a page, then compress & crop them. Given below is php code for image compression , which compress the jpeg and download the compressed version. This works fine upto 3mb(4567*2755) but not files above it.

Edit:

The message that appears in the server error log is

[04-Jun-2015 08:10:07 Europe/Paris] PHP Warning: POST Content-Length of 4213306 bytes exceeds the limit of 3145728 bytes in Unknown on line 0

Please help :-(

<?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>
  • 写回答

1条回答 默认 最新

  • doujiayuan8415 2015-06-05 02:42
    关注

    Your PHP configuration is limiting the size of POST data to about 3Mb. To load a larger file you need to change a couple of items in PHP.INI. You can determine the location of PHP.INI with php_ini_loaded_file() - see this answer

    post_max_size sets the maximum size of a POST. This refers to all the data in a POST - uploaded file(s) and any form variables. This will need to be raised to about 5Mb (larger if you want to handle bigger files)

    You'll probably also need to set upload_max_filesize to something larger, but smaller than post_max_size. Again, determine the size of files you're likely to need and set accordingly.

    These values are usually set in the system-wide PHP.INI file. Some are configurable through .htaccess or a PHP.INI file in the application directory; others can be set programmatically with ini_set(). The references I have linked to will tell you where you can set different parameters. The reference for the configuration mode settings is here

    Note that some hosting companies limit what you can do on their cheap (or free) hosting packages. You might not be able to change anything if you're on a free package. There's no work around: get a better host, and pay if necessary.

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器