目前有一个简单的功能,但它允许用户添加大图像。我希望让所有的图片上传,但应该有,直到某些文件的大小满足(如在200KB例如))命题调整图像大小,直到符合所需的文件大小
if($_FILES['file']['size'] != 0){
$uploadOk = 0;
//image object
$image = $_FILES['file'];
//create unique name for file
$imageRandomName = substr(md5(time()), 0, 5) . "-" . $image['name'];
//upload dir
$target_dir = "rest/user" . $_SESSION["username"] . "/events/" . $_SESSION["event_id"] . "/people/";
//make folder for user if non exists
if(!file_exists($target_dir)){
mkdir($target_dir, 0777, true);
}
//file to be upload
$target_file = $target_dir . base($imageRandomName);
//get file type
$imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
$check = getimagesize($image["tmp_name"]);
if($check !== false){
$uploadOk = 1;
} else {
$uploadOk = 0;
}
if($uploadOk == 0){
echo "noupload";
} else {
if (move_uploaded_file($image["tmp_name"], $target_file)) {
//get file size on server
$filesizeonserver = filesize($target_file);
echo "file: ".$target_file." size: ".$filesizeonserver;
$times = 0;
if($filesizeonserver > 100000){
do{
$resized = resizeImage($target_file, "0.1");
$filesizeonserver = filesize($target_file);
$times++;
} while ($filesizeonserver > 100000);
echo "resized ".$times." times";
} else {
}
//mysql query
} else {
echo "Sorry, there was an error uploading your file.";
}
}
} else {
//do mysql query
}
resizeImage(
function resizeImage($file, $percent){
list($width, $height) = getimagesize($file);
$newwidth = $width-($width*$percent);
$newheight = $height-($height*$percent);
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($file);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
$newImage = imagejpeg($thumb, $file, 100);
return $newImage;
}
现在调整图像大小的功能我我想我真的很接近实现它,但由于一些奇怪的原因,我得到的图像尺寸为1px宽,4px高,尺寸为4kb。完全黑色的图像。
如果你在想什么图像时增加了这个功能: 1232055字节,1220×1829,为72dpi,JPEG
编辑:好的,现在我觉得有什么不妥的resizeImage功能。因为它只在第一次运作。出于某种原因,它无法获得图像,并呈现出黑色和微小。
编辑2:现在我正在获取图像大小调整功能,它没有任何问题。我注意到该函数不断调整图像的大小直到其结束。我可以看到它如何缩小。
编辑3:我找到了问题。现在看来,$ filesizeonserver始终是第一个值,并在做...而它不更新,即使你是我设置它改变。
要限制文件大小上传吗?你可以简单地检查 $ _FILES ['file'] ['size'] –
你已经显示的代码片段开始于_检查上传文件的大小是否不是0,并且你不能拿出任何东西? – CBroe
当你明白你不明白这一点时,立即对问题进行评级是非常不合理的。我需要的是调整图像大小的函数,我不知道如何继续。 –