PHP使用Intervention Image图像处理

在 Web 开发中,图像处理是常见需求:缩略图生成、水印添加、格式转换......但原生 PHP 的 GD 库 API 复杂且易出错。本文将提供Intervention ImagePHP 图像处理库从安装到高级用法的完整实战指南,它能用极简代码完成复杂的图像操作。

目录

安装

常用场景

加载图像

获取原始尺寸

缩略图

图片水印

文字水印

保存图像

高级场景

缩放和裁剪

智能裁剪

旋转与翻转

高级技巧链式操作

总结


安装

Intervention Image 通过 Composer 安装,无需手动配置。

确保你的服务器已安装 php-gd 扩展。

Linux用sudo apt install php-gd,

Windows启用extension=gd。

bash 复制代码
# 安装(需适配环境)
composer require intervention/image

注意:

Intervention Image 目前有两个主要版本。

V2 是经典款,V3 是2023年推出的重构版(支持 PHP 8.1+)。

本文是在php7.4环境,故安装的是版本2。

常用场景

加载图像

加载图像(支持 JPG/PNG/GIF/WebP)

php 复制代码
$filePath = public_path('uploads/test.png');
$image = Image::make($filePath);
获取原始尺寸
php 复制代码
$width = $image->width();
$height = $image->height();
缩略图

缩放:保持比例,最大尺寸 800x600

resize() 会智能处理比例,upsize() 防止缩小图片被放大

php 复制代码
$image->resize(800, 600, function ($constraint) {
    $constraint->aspectRatio();
    $constraint->upsize();
});
图片水印

可以设置水印图片的透明度和位置。

php 复制代码
$watermarkPath = public_path('uploads/water.png');
$watermark = Image::make($watermarkPath);
// 设置水印透明度
$watermark->opacity(50);
// 水印位置
$position = 'bottom-left';
// 插入水印
$image->insert($watermark, $position);

还可以设置x、y位置。

php 复制代码
$watermark = Image::make(public_path('uploads/water.png'));
$image->insert($watermark, 'bottom-right', 10, 10);
文字水印

需要设置字体位置。

php 复制代码
$fontSize = 12;
$fontColor = '#ff0000';
$fontPath = public_path('fonts/simhei.ttf');
$image->text('@水印', 100, 200, function($font) use ($fontSize, $fontColor, $fontPath) {
      $font->file($fontPath);
      $font->size($fontSize);
      $font->color($fontColor);
});
保存图像

设置好路径,保存最后的图像。

php 复制代码
$image->save(public_path('uploads/thumb.jpg'));

高级场景

缩放和裁剪

Crop在当前图像中剪切出一个给定宽度和高度的矩形部分。

生成 300x300 正方形缩略图。

php 复制代码
$image->resize(300, 300, function ($constraint) {
            $constraint->aspectRatio();
            $constraint->upsize();
        })->crop(300, 300);
智能裁剪

将裁剪和调整尺寸相结合,以智能的方式格式化图像。

避免缩放后变形,自动填充背景(默认白色),比 resize() 更适合头像/封面图。

position值,默认为center,还可以设置如下参数:

· top-left

· top

· top-right

· left

· center (default)

· right

· bottom-left

· bottom

· bottom-right

php 复制代码
$image->fit(800, 600, null, 'center');
旋转与翻转
php 复制代码
// 旋转 90 度
$image->rotate(90);
        
// 水平翻转(镜像)
$image->flip('h');
        
// 垂直翻转
$image->flip('v');

高级技巧链式操作

Intervention 的链式调用是最大亮点,避免重复创建对象;

一行代码完成:缩放 → 旋转 → 添加水印 → 保存。

php 复制代码
Image::make(public_path('uploads/test.png'))
            ->resize(800, null) // 宽度 800,高度自适应
            ->rotate(15)
            ->insert(Image::make(public_path('uploads/water.png')), 'bottom-right', 15, 15)
            ->save('uploads/over.jpg');

批量处理图片

php 复制代码
        $images = glob(public_path('uploads/test/*.png'));
        foreach ($images as $path) {
            $image = Image::make($path);
            $image->fit(300, 400, null, 'center');
            // 取出文件后缀
            $fileExtension = pathinfo($path, PATHINFO_EXTENSION);
            // 生成文件名
            $fileName = date('YmdHis') . uniqid() .'.'. $fileExtension;
            // 确保目录存在
            $targetDir = public_path('thumbs');
            if (!file_exists($targetDir)) {
                mkdir($targetDir, 0755, true);
            }
            $image->save($targetDir . '/' . $fileName);
            $image->destroy(); // 释放内存
        }

官方文档:https://image.intervention.io/v2

总结

使用Composer进行安装Intervention Image库。确保服务器已安装php-gd扩展。常用场景包括加载图像、缩略图生成、图片水印添加和保存图像等。高级场景涉及智能裁剪、旋转与翻转操作以及链式调用。高级技巧还包括批量处理图片。

相关推荐
霍夫曼vx_helloworld73521 小时前
字符提取与字符识别
图像处理·人工智能·计算机视觉
treesforest2 小时前
IP数据库下载完全指南:免费与商业IP定位库对比
网络·数据库·php
ZHW_AI课题组3 小时前
基于AnimeGANv2的照片动漫化
图像处理·python
原来是猿3 小时前
网络计算器:理解序列化与反序列化(下)
linux·开发语言·网络·网络协议·json·php
原来是猿3 小时前
Linux守护进程(Daemon)完全指南:从原理到实战
linux·运维·服务器·网络·php
人月神话-Lee5 小时前
【图像处理】颜色科学与灰度化——人眼看到的和数字记录的不一样
图像处理·人工智能·计算机视觉·ios·swift
阿洛学长6 小时前
更好用的Wordpress二次元主题!Mokore更新1.2啦
php
霍夫曼vx_helloworld73526 小时前
经典图像检测技术概述
图像处理·人工智能·计算机视觉
AIBox3657 小时前
Claude 中转站怎么接入:2026 年国内调用 Claude API 的方法、能力与示例
服务器·开发语言·人工智能·gpt·php·python3.11