一、图片上传

1.1 准备工作

  • PHP环境已经安装并配置好。
  • 服务器支持文件上传功能。
  • 创建一个用于存储上传图片的文件夹,并设置相应的权限。

1.2 HTML表单

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="image" />
  <input type="submit" value="上传" />
</form>

1.3 PHP处理

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $target_dir = "uploads/";
  $target_file = $target_dir . basename($_FILES["image"]["name"]);
  $uploadOk = 1;
  $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

  // 检查文件是否已存在
  if (file_exists($target_file)) {
    echo "文件已存在。";
    $uploadOk = 0;
  }

  // 检查文件大小
  if ($_FILES["image"]["size"] > 500000) {
    echo "文件太大。";
    $uploadOk = 0;
  }

  // 允许特定格式的文件
  if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  && $imageFileType != "gif") {
    echo "不支持的文件格式。";
    $uploadOk = 0;
  }

  // 检查是否上传成功
  if ($uploadOk == 1) {
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
      echo "文件上传成功: " . htmlspecialchars($target_file);
    } else {
      echo "文件上传失败。";
    }
  }
}
?>

二、图片裁剪

2.1 准备工作

2.2 裁剪函数

function cropImage($source, $destination, $width, $height, $x, $y) {
  $img = imagecreatefromjpeg($source);
  $cropped = imagecrop($img, ['x' => $x, 'y' => $y, 'width' => $width, 'height' => $height]);
  imagejpeg($cropped, $destination);
  imagedestroy($img);
  imagedestroy($cropped);
}

2.3 使用函数

  • $source:原始图片路径。
  • $destination:裁剪后图片的保存路径。
  • $width:裁剪区域的宽度。
  • $height:裁剪区域的高度。
  • $x:裁剪区域左上角的X坐标。
  • $y:裁剪区域左上角的Y坐标。

以下是一个使用裁剪函数的示例:

cropImage('uploads/image.jpg', 'uploads/cropped_image.jpg', 100, 100, 50, 50);

三、总结