Я хочу, чтобы люди загружали свои изображения на страницу, а затем сжимали & обрезать их. Ниже дано PHP-код за сжатие изображения , который сжимает JPEG и скачать сжатую версию. Это прекрасно работает до 3 МБ (4567 * 2755), но не выше файлов.
Редактировать:
Сообщение, которое появляется в журнале ошибок сервера:
[04-Jun-2015 08:10:07 Европа / Париж] Предупреждение PHP: Длина содержимого POST 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>
Ваша конфигурация PHP ограничивает размер данных POST до 3 МБ. Чтобы загрузить файл большего размера, вам нужно изменить пару пунктов в PHP.INI. Вы можете определить местоположение PHP.INI с php_ini_loaded_file () — увидеть этот ответ
post_max_size устанавливает максимальный размер POST. Это относится к все данные в POST — загруженный файл (ы) и любые переменные формы. Это должно быть увеличено до 5 МБ (больше, если вы хотите обрабатывать большие файлы)
Вам, вероятно, также нужно установить upload_max_filesize к чему-то большему, но меньше, чем post_max_size
, Опять же, определите размер файлов, которые вам могут понадобиться, и установите их соответствующим образом.
Эти значения обычно задаются в общесистемном файле PHP.INI. Некоторые настраиваются через .htaccess
или файл PHP.INI в каталоге приложения; другие могут быть установлены программно с ini_set (). Ссылки, на которые я ссылаюсь, расскажут вам, где вы можете установить различные параметры. Ссылка для настройки режима конфигурации Вот
Обратите внимание, что некоторые хостинговые компании ограничивают то, что вы можете делать с их дешевыми (или бесплатными) пакетами хостинга. Возможно, вы не сможете ничего изменить, если у вас бесплатный пакет. Там нет работы вокруг: получить лучшего хозяина и платить при необходимости.
Других решений пока нет …