我正在尝试制作简单的代码来上传图像>调整大小>保存在目录中>并在调整大小后在浏览器中显示。问题是该文件正在保存,但我的回声不起作用,我得到灰色背景,其中包含图像包含错误且无法显示的信息。
当 imagejpeg 参数设置为 imagejpeg($imageP, null, 100) 时,图片显示在此灰色背景上,但页面的其余部分仍然丢失。
调整大小功能:
function resizeProportionallyByPx($width, $height, $image)
{
header('Content-Type: image/jpg');
list($widthOriginal, $heightOriginal) = getimagesize($image);
$ratioOriginal = $widthOriginal/$heightOriginal;
if($width/$height > $ratioOriginal){
$width = $height * $ratioOriginal;
}else{
$height = $width * $ratioOriginal;
}
$imageP = imagecreatetruecolor($width, $height);
$imageJ = imagecreatefromjpeg($image);
imagecopyresampled($imageP, $imageJ, 0, 0, 0, 0, $width, $height, $widthOriginal, $heightOriginal);
imagejpeg($imageP, '../imagesResized/demo.jpg', 100);
}
代码:
if (isset($_FILES['imageToUpload']) && isset($_POST['width']) && isset($_POST['height']) && is_numeric($_POST['width']) && is_numeric($_POST['height'])) {
$uploadDir = "../images/";
$uploadFile = $uploadDir . basename($_FILES['imageToUpload']['name']);
$width = $_POST['width'];
$height = $_POST['height'];
if(move_uploaded_file($_FILES['imageToUpload']['tmp_name'], $uploadFile))
{
$size = formatSizeUnits($_FILES['imageToUpload']['size']);
$image = $_FILES["imageToUpload"]["name"];
$imageOriginalPath = "../images/" . $image;
resizeProportionallyByPx($width, $height, $imageOriginalPath);
$imageResizedPath = '../imagesResized/demo.jpg';
echo "Uploaded file info:" . '<br />'
. "File name: " . $_FILES['imageToUpload']['name'] . " is valid and was successfully uploaded.<br />"
. " File type: " . $_FILES['imageToUpload']['type'] . '<br />'
. " File size: " . $size . '<br />'
. " Temp file: " . $_FILES["imageToUpload"]["tmp_name"] . '<br />'
. "<img src=" . "$imageOriginalPath><br />"
. "Image after resize: <br />"
. "<img src=$imageResizedPath>" . "<br />";
}
else
{
echo "Possible file upload attack, upload has failed." . "Error: " . $_FILES['imageToUpload']['error'];
}
}
chmod 和 chow 已配置。希望有人可以帮助我解决我的第一个问题,干杯。