php压缩图片到指定大小
时间: 2024-10-05 09:01:50 浏览: 10
PHP中可以使用GD库或者 Intervention Image 这样的第三方库来压缩图片并调整至指定大小。这里我会以GD库为例讲解:
1. 使用GD库:
```php
function resize_image($source_path, $destination_path, $width, $height) {
// 创建资源
$img = imagecreatefromjpeg($source_path);
if ($img === false) {
die("无法打开图片文件");
}
// 计算缩放比例
$ratio = min($width / imagesx($img), $height / imagesy($img));
// 设置新尺寸
$new_width = round(imagesx($img) * $ratio);
$new_height = round(imagesy($img) * $ratio);
// 创建目标图像
$resized_img = imagecreatetruecolor($width, $height);
// 缩放和合并
imagecopyresampled($resized_img, $img, 0, 0, 0, 0, $new_width, $new_height, imagesx($img), imagesy($img));
// 保存处理后的图片
imagejpeg($resized_img, $destination_path, 90); // 第三个参数设置JPEG质量,范围0-100,默认是75
// 清理内存
imagedestroy($img);
imagedestroy($resized_img);
}
// 使用示例
$source_path = 'path/to/source.jpg';
$destination_path = 'path/to/destination.jpg';
resize_image($source_path, $destination_path, 800, 600);
```
2. 使用Intervention Image:
```php
use Intervention\Image\Facades\Image;
function compress_image($sourcePath, $destinationPath, $width, $height) {
$image = Image::make($sourcePath)
->fit($width, $height, function ($constraint) {
$constraint->upsize();
})
->save($destinationPath);
}
// 示例
$sourcePath = 'path/to/source.jpg';
$destinationPath = 'path/to/destination.jpg';
compress_image($sourcePath, $destinationPath, 800, 600);
```