引言

图片上传基本流程

  1. 接收前端上传的图片:前端通常使用HTML和JavaScript实现图片的选取和上传。
  2. 后端接收图片:使用PHP等服务器端语言接收上传的图片。
  3. 图片处理:对上传的图片进行处理,如压缩、缩放等。
  4. 存储图片:将处理后的图片存储到服务器上。

PHP实现图片上传

<?php
// 检查是否有文件被上传
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) {
    $file = $_FILES['image'];
    $upload_dir = 'uploads/';
    $upload_path = $upload_dir . basename($file['name']);

    // 检查文件类型
    $allowed_types = array('jpg', 'jpeg', 'png', 'gif');
    $file_type = strtolower(pathinfo($upload_path, PATHINFO_EXTENSION));

    if (in_array($file_type, $allowed_types)) {
        // 检查文件大小
        $max_size = 5 * 1024 * 1024; // 5MB
        if ($file['size'] <= $max_size) {
            // 移动文件到指定目录
            if (move_uploaded_file($file['tmp_name'], $upload_path)) {
                echo "文件上传成功!";
            } else {
                echo "文件上传失败!";
            }
        } else {
            echo "文件大小超出!";
        }
    } else {
        echo "不支持的文件类型!";
    }
}
?>

控制图片大小

1. 上传大小

在上面的PHP脚本中,我们已经设置了文件大小的。这可以有效防止大文件上传导致的资源消耗。

2. 图片压缩

<?php
// 获取上传图片的信息
list($width, $height) = getimagesize($upload_path);

// 设置压缩后的图片宽度和高度
$new_width = $width / 2;
$new_height = $height / 2;

// 创建新图像
$dst_image = imagecreatetruecolor($new_width, $new_height);

// 载入原图
$src_image = imagecreatefromjpeg($upload_path);

// 复制并调整大小
imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 输出图像
imagejpeg($dst_image, $upload_path);

// 释放内存
imagedestroy($dst_image);
imagedestroy($src_image);
?>

3. 使用第三方库

总结