# image **Repository Path**: fiberphp/image ## Basic Information - **Project Name**: image - **Description**: 🖼️ FiberPHP 图片处理组件 —— GD/Imagick 双驱动,支持缩放、裁剪、水印、格式转换,链式操作。 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-23 - **Last Updated**: 2026-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🖼️ FiberPHP 图片处理组件 GD/Imagick 双驱动,支持缩放、裁剪、水印、格式转换,链式操作。 ## 目录结构 ``` src/ ├── Image.php # 统一入口 ├── Contract/ │ └── DriverInterface.php # 驱动契约 └── Driver/ ├── GdDriver.php # GD 驱动(默认,PHP 内置) └── ImagickDriver.php # Imagick 驱动(更高质量) config/ └── image.php # 配置文件 tests/ ├── ImageTest.php # 8 个测试用例 ├── bootstrap.php └── fixtures/ # 测试图片 ``` ## 安装 ```bash composer require fiberphp/image ``` 安装后通过 `PackageManifest` 自动注册 Provider;包内置 `config/image.php` 默认配置随包自动合并,装包即用,应用在自己的 `config/image.php` 放同名键即可覆盖。 ## 配置 `config/image.php`(默认值随包合并): ```php return [ 'driver' => extension_loaded('imagick') ? 'imagick' : 'gd', 'quality' => 85, 'formats' => ['jpg', 'png', 'webp', 'gif'], 'watermark' => [ 'position' => 'bottom-right', 'opacity' => 80, 'padding' => 10, ], ]; ``` ## 快速开始 ### 链式操作 ```php // 打开图片并链式处理 image()->open('/path/to/photo.jpg') ->resize(300, 200) ->crop(200, 200) ->watermark('/path/to/logo.png', 'bottom-right') ->save('/path/to/output.jpg', quality: 80); ``` ### 缩放 ```php image()->open($path)->resize(800, 600)->save($output); ``` ### 裁剪 ```php image()->open($path)->crop(200, 200, x: 50, y: 50)->save($output); ``` ### 水印 ```php image()->open($path) ->watermark('/path/to/logo.png', 'bottom-right', opacity: 60) ->save($output); ``` 位置可选:`top-left`、`top-right`、`bottom-left`、`bottom-right`、`center` ### 格式转换 ```php image()->open($path)->convert('webp')->save('/path/to/output.webp'); ``` ### Base64 输出 ```php $base64 = image()->open($path)->resize(100, 100)->toBase64(); // data:image/png;base64,iVBORw0KG... ``` ### 获取尺寸 ```php $img = image()->open($path); echo $img->width(); // 1920 echo $img->height(); // 1080 ``` ## API ### DriverInterface | 方法 | 说明 | |------------------------------------|-------------| | `open($path)` | 打开图片 | | `resize($w, $h)` | 缩放 | | `crop($w, $h, $x, $y)` | 裁剪 | | `watermark($path, $pos, $opacity)` | 水印 | | `convert($format)` | 格式转换 | | `save($path, $quality)` | 保存 | | `toBase64()` | 输出 Base64 | | `width()` | 宽度 | | `height()` | 高度 | | `destroy()` | 释放资源 | ## 测试 ```bash composer install ./vendor/bin/phpunit ``` ## License MIT