图片上传
1. 文件上传表单
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" value="上传" />
</form>
2. PHP处理上传
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['image'])) {
$image = $_FILES['image'];
$upload_dir = 'uploads/';
$upload_path = $upload_dir . basename($image['name']);
if (move_uploaded_file($image['tmp_name'], $upload_path)) {
echo "文件上传成功!";
} else {
echo "文件上传失败!";
}
}
?>
3. 验证文件类型
if (getimagesize($image['tmp_name']) === false) {
die("文件不是一个有效的图片!");
}
图片压缩
1. 使用ImageMagick
安装
在Linux系统中,可以使用以下命令安装:
sudo apt-get install imagemagick
PHP扩展
在PHP中,可以使用Imagick扩展来调用ImageMagick。
<?php
$image = new Imagick($upload_path);
$image->setImageCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(75);
$image->resizeImage(800, null, Imagick::FILTER_LANCZOS, 1);
$image->writeImage($upload_path);
$image->clear();
$image->destroy();
?>
2. 使用GD库
<?php
$image = imagecreatefromjpeg($upload_path);
$width = imagesx($image);
$height = imagesy($image);
$resize_width = 800;
$resize_height = ($height * $resize_width) / $width;
$image_resized = imagecreatetruecolor($resize_width, $resize_height);
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $resize_width, $resize_height, $width, $height);
imagejpeg($image_resized, $upload_path);
imagedestroy($image);
imagedestroy($image_resized);
?>
3. 智能压缩
<?php
$original_size = filesize($upload_path);
$desired_size = 500000; // 500KB
if ($original_size > $desired_size) {
// 压缩图片
// ...
}
?>