引言
图片上传前的准备
在开始编写代码之前,我们需要做好以下准备:
- 服务器环境:确保你的服务器已经安装了PHP和GD库,GD库是处理图像的关键。
- 上传表单:创建一个HTML表单,让用户可以选择上传图片。
- 文件类型:为了安全起见,可以上传的文件类型,例如只允许上传图片。
示例代码:HTML上传表单
<form action="upload.php" method="post" enctype="multipart/form-data">
选择图片:<input type="file" name="image" />
<input type="submit" value="上传" />
</form>
PHP图片上传处理
- 检查文件是否上传:使用
$_FILES数组来检查是否有文件被上传。 - 验证文件类型:使用
getimagesize()函数或其他方法验证文件是否为有效的图片。 - 重命名文件:为了防止文件名冲突,给上传的文件重命名。
- 移动文件到目标目录:使用
move_uploaded_file()函数将文件移动到服务器上的指定目录。
示例代码:PHP处理图片上传
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$image = $_FILES['image'];
$target_dir = "uploads/";
$target_file = $target_dir . basename($image['name']);
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 检查文件类型
$check = getimagesize($image['tmp_name']);
if ($check !== false) {
echo "文件是一个真实的图片 - " . $check["mime"] . ".";
} else {
echo "文件不是一个图片。";
exit();
}
// 检查文件大小
if ($image['size'] > 500000) {
echo "文件太大,请上传不超过500KB的图片。";
exit();
}
// 允许特定的格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "抱歉,只能上传 JPG, JPEG, PNG & GIF 文件。";
exit();
}
// 移动上传文件到指定目录
if (move_uploaded_file($image['tmp_name'], $target_file)) {
echo "文件已成功上传:". basename( $image['name']);
} else {
echo "文件上传出错。";
}
}
?>
图片保存与处理
- 压缩图片:减少图片的大小,以便于存储和传输。
- 调整图片大小:根据需要调整图片的宽度和高度。
- 添加水印:在图片上添加文字或图片水印。
示例代码:PHP图片处理
// 载入图片
$image = imagecreatefromjpeg($target_file);
// 调整图片大小
list($width, $height) = getimagesize($target_file);
$newWidth = 100;
$newHeight = ($height / $width) * $newWidth;
$thumbnail = imagecreatetruecolor($newWidth, $newHeight);
// 复制并调整大小
imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// 保存调整大小后的图片
imagejpeg($thumbnail, $target_dir . "thumbnail_" . basename($image['name']));