在上传之前调整图像文件的大小;我们可以覆盖临时文件并上传吗?
Posted
技术标签:
【中文标题】在上传之前调整图像文件的大小;我们可以覆盖临时文件并上传吗?【英文标题】:Resize the image-file before uploading; Could we overwrite the temp file & upload? 【发布时间】:2015-08-16 10:54:14 【问题描述】:我希望在上传之前调整图像文件的大小。我的想法是,调整“临时”文件的大小并上传。但是代码给出了错误。下面我附上了我的代码和 cmets。
<input type="file" name="file" id="file" required /> <!-- html Front-end through which the file would be uploaded-->
php 代码开始...
$fileName = $_FILES['file']['tmp_name']; //get the uploaded file's name
$ext = strtolower(substr(strrchr(fileName, '.'), 1)); //get the file's extension
$tempFile = $_FILES['file']['tmp_name']; //temporary file's path
$identityNumber="20150816"; //assigns an identity number and...
$targetPath = "uploads/".$identityNumber.'.'.$ext; //rename file & upload it
$image_properties = getimagesize($tempFile);
$image_width = $image_properties[0];
$image_height = $image_properties[1];
$percent = 0.5; //Percentage by which the image is going to be resized
$newWidth = $image_width * $percent;
$newHeight = $image_height * $percent;
if ($ext == "jpeg" || $ext == "jpg")
header('Content-type: image/jpeg');
$thumb = imagecreatefromjpeg($tempFile);
elseif ($ext == "png")
header('Content-type: image/png');
$thumb = imagecreatefrompng($tempFile);
$modifiedFile = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled(
$modifiedFile,
$thumb,
0,
0,
0,
0,
$new_width,
$new_height,
$width,
$height
);
这是给出警告的代码,如下所述...
move_uploaded_file($modifiedFile,$targetPath);
警告:move_uploaded_file() 期望参数 1 是字符串,资源在...中给出。
而“回声是”
资源 ID #10
为什么函数 move_uploaded_file 会发出警告..?任何人都可以帮助实现它吗?
我知道有几种方法可以调整图像的大小,例如“GD”、“ImageMajick”等。但我只喜欢上面的代码......
【问题讨论】:
【参考方案1】:您可以使用imagepng
函数保存文件,该函数与move_uploaded_file
不同,接受资源参数。 imagejpeg
函数也存在。
imagepng ($modifiedFile, $targetPath);
【讨论】:
【参考方案2】:http://us3.php.net/manual/en/function.imagejpeg.php
move_uploaded_file() 文件用于将上传的文件从临时文件夹移动到目标文件夹。它像复制一样工作。所以它期望两个参数都是字符串。
在您的情况下,您将创建一个全新的图像文件,因此您需要使用 imageXXX() 函数将图像写入磁盘。对于 jpeg 图像,您调用 imagejpeg() 对于 png,您使用 imagepng() 等。
【讨论】:
以上是关于在上传之前调整图像文件的大小;我们可以覆盖临时文件并上传吗?的主要内容,如果未能解决你的问题,请参考以下文章
可以在上传之前在 html 表单上调整图像(客户端)的大小吗?