引言

准备工作

使用GD库缩小图片尺寸

1. 获取图片信息

function get_image_size($image_path) {
    return getimagesize($image_path);
}

$image_info = get_image_size('path/to/your/image.jpg');

2. 创建新的图片资源

function create_new_image($image_info) {
    switch ($image_info[2]) {
        case IMAGETYPE_JPEG:
            return imagecreatefromjpeg($image_info[0]);
        case IMAGETYPE_PNG:
            return imagecreatefrompng($image_info[0]);
        case IMAGETYPE_GIF:
            return imagecreatefromgif($image_info[0]);
        default:
            return false;
    }
}

$new_image = create_new_image($image_info);

3. 计算新的尺寸

function calculate_new_dimensions($width, $height, $new_width) {
    $ratio = $height / $width;
    return array($new_width, (int)($new_width * $ratio));
}

$new_dimensions = calculate_new_dimensions($image_info[0], $image_info[1], 100); // 将图片缩小到100像素宽

4. 调整图片尺寸

使用imagecopyresampled()函数将原图复制到新的尺寸。

function resize_image($source_image, $new_width, $new_height) {
    $new_image = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($new_image, $source_image, 0, 0, 0, 0, $new_width, $new_height, $image_info[0], $image_info[1]);
    return $new_image;
}

$ resized_image = resize_image($new_image, $new_dimensions[0], $new_dimensions[1]);

5. 输出或保存图片

function output_image($image, $image_path) {
    switch ($image_info[2]) {
        case IMAGETYPE_JPEG:
            imagejpeg($image, $image_path);
            break;
        case IMAGETYPE_PNG:
            imagepng($image, $image_path);
            break;
        case IMAGETYPE_GIF:
            imagegif($image, $image_path);
            break;
    }
    imagedestroy($image);
}

output_image($resized_image, 'path/to/your/resized_image.jpg');

总结