图片上传
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'];
$uploadPath = 'uploads/';
// 确保上传的文件是图片
if (getimagesize($image['tmp_name']) !== false) {
// 重命名上传的文件
$newFileName = uniqid() . '.' . pathinfo($image['name'], PATHINFO_EXTENSION);
$destination = $uploadPath . $newFileName;
// 移动上传的文件到指定目录
if (move_uploaded_file($image['tmp_name'], $destination)) {
echo "图片上传成功!";
} else {
echo "图片上传失败。";
}
} else {
echo "上传的文件不是图片。";
}
}
?>
3. 设置上传目录权限
确保上传目录(例如 uploads/)具有正确的权限,以便PHP可以写入文件。
chmod 755 uploads/
图片智能压缩
1. 使用GD库进行压缩
<?php
// 获取上传图片的信息
$image = imagecreatefromjpeg('uploads/image.jpg');
$width = imagesx($image);
$height = imagesy($image);
// 设置压缩后的图片尺寸
$newWidth = 800;
$newHeight = ($height * $newWidth) / $width;
// 创建一个新的图片资源
$imageResized = imagecreatetruecolor($newWidth, $newHeight);
// 复制并调整图片大小
imagecopyresampled($imageResized, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// 输出压缩后的图片
imagejpeg($imageResized, 'uploads/compressed_image.jpg');
// 释放内存
imagedestroy($image);
imagedestroy($imageResized);
?>
2. 使用第三方库
如果您需要更高级的压缩功能,可以考虑使用第三方库,如Imagick或Gmagick。以下是一个使用Imagick的示例:
<?php
// 载入图片
$image = new Imagick('uploads/image.jpg');
// 设置压缩比例
$image->setImageCompression(Imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(75);
// 重命名图片
$image->setImageFilename('uploads/compressed_image.jpg');
// 保存图片
$image->writeImage();
// 释放资源
$image->clear();
$image->destroy();
?>