Следующий код, который у меня есть, представляет собой комбинацию из двух источников.Сжатие изображения с помощью PHP затем Загрузить
Загрузить изображение: http://www.w3schools.com/php/php_file_upload.asp Compression Изображение: https://www.apptha.com/blog/how-to-reduce-image-file-size-while-uploading-using-php-code/
The Image Загрузить функция загрузки прямо на сервере. Сжатие сжимает изображение, а затем загружает его. Я пытаюсь интегрировать эту функцию загрузки в мою функцию загрузки, поскольку она уже встроена в наш веб-сайт.
Следующий код делает две вещи:
- Он сжимает при загрузке и загрузки
- Загрузки сырьевых изображений на сервер несжатого
То, что я хочу сделать, это сжать на загрузке и отправить к серверу. Мне не нужна загрузка. У меня просто проблемы с объединением двух функций.
<?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 = 'destination .jpg';
$filename = compress_image($_FILES["file"]["tmp_name"], $url, 80);
$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;
//**The following is the image upload to the server**********
$target_dir = "newuploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);{
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
echo "";}
}
}
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>
Спасибо, что заботится о загрузке. Но переменная сжатия отличается от загружаемой. Как я могу интегрировать сжатие в функцию загрузки? Сейчас он будет загружен на сервер без сжатия. – jm874327
Вы не можете сжать файл, пока он не появится на сервере. – RiggsFolly
Значит, вы говорите, что этот код не будет работать? Если вы не можете предложить, как мне это сделать? – jm874327