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扩展。常用场景包括加载图像、缩略图生成、图片水印添加和保存图像等。高级场景涉及智能裁剪、旋转与翻转操作以及链式调用。高级技巧还包括批量处理图片。

相关推荐
两个人的幸福3 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo5 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack5 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982076 天前
PHP 扩展——从入门到理解
php
鹏仔先生7 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下7 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip7 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒7 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2507 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis7 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel