rundiz/image

使用 GD 或 Imagick 作为驱动器的图像处理。支持水印图像或文本、调整大小、裁剪、旋转、透明 GIF 或 PNG,同时也支持动画 GIF(仅 Imagick)。

3.1.5 2024-04-09 13:42 UTC

This package is auto-updated.

Last update: 2024-09-09 14:35:49 UTC


README

使用 GD 或 Imagick 作为驱动器的简单图像处理。

功能

支持的文件扩展名

  • AVIF (AVIFS)*
  • GIF
  • JPG (JPEG)
  • PNG
  • WEBP*

功能

  • 裁剪
  • 翻转(需要 PHP 5.5+ 支持 GD 驱动器。)
  • 调整大小(宽高比和宽高比不变)
  • 旋转
  • 水印图像(包括 alpha 透明度。)
  • 水印文本(包括 alpha 透明度。)
  • 支持 alpha 透明度或透明的 AVIF、GIF、PNG、WEBP。
  • 支持动画 GIF、WEBP*(仅 Imagick)。

Latest Stable Version License Total Downloads

示例

驱动器

Gd 驱动器

$Image = new \Rundiz\Image\Drivers\Gd('/path/to/source-image.jpg');

Imagick 驱动器

$Image = new \Rundiz\Image\Drivers\Imagick('/path/to/source-image.jpg');

后备驱动器

如果不支持,您可以同时使用多个驱动器作为后备。

if (extension_loaded('imagick') === true) {
    $Image = new \Rundiz\Image\Drivers\Imagick('/path/to/source-image.jpg');
} else {
    $Image = new \Rundiz\Image\Drivers\Gd('/path/to/source-image.jpg');
}

图像处理方法

// Crop an image
$Image->crop(400, 400, 'center', 'middle');// crop start from center of X and Y
$Image->crop(400, 400, 20, 90);// crop start from X 20 and Y 90

// Resize
$Image->resize(600, 400);
// Resize without aspect ratio
$Image->resizeNoRatio(500, 300);

// Rotate
$Image->rotate();// 90 degree
$Image->rotate(180);
$Image->rotate(270);

// Flip
$Image->rotate('hor');// horizontal
$Image->rotate('vrt');//  vertical
$Image->rotate('horvrt');// both horizontal and vertical

// Watermark image
$Image->watermarkImage('/var/www/image/watermark.png', 'center', 'middle');
$Image->watermarkImage('/var/www/image/watermark.png', 50, 90);// watermark start from X 50 and Y 90

// Watermark text
$Image->watermarkText('hello world', '/var/www/fonts/myfont.ttf', 'center', 'middle', 16);
$Image->watermarkText('hello world', '/var/www/fonts/myfont.ttf', 50, 90, 16);// watermark start from X 50 and Y 90

多图像处理

$Image = new \Rundiz\Image\Drivers\Gd('/path/to/source-image.jpg');
$Image->resize(900, 600);
$Image->save('/path/to/new-file-name-900x600.jpg');
// Use method clear() to clear all processed data 
// and start new image process with the same image source.
$Image->clear();
$Image->resize(300, 100);
$Image->save('/path/to/new-file-name-300x100.jpg');

有关更多详细信息,请参阅测试文件夹或查看 API 文档

备注

  • *AVIF
    • 使用 ImageMagick 7.0.10-25 之前的版本 的 PHP 和 Imagick 不支持打开或保存 AVIF。
      某些较老的系统可能可以保存,但文件的 MIME 类型不会改变。
    • PHP 和 Imagick(依赖于 ImageMagick) 不支持动画 AVIF(AVIFS)。
    • 所有版本的 PHP(最后检查 8.3)与 GD 一起不支持某些类型的 AVIF。
    • 使用 GD 的 PHP 8.1 之前的版本不支持 AVIF。
  • *WEBP
    • 使用 ImageMagick 7.0.8.68 之前的版本 的 PHP 和 Imagick 不支持打开或保存动画 WEBP。
    • 所有版本的 PHP(最后检查 8.3)与 GD 一起不支持动画 WEBP。
    • 使用 GD 的 PHP 7.0 之前的版本不支持打开或保存透明 WEBP。
    • 使用 GD 的 PHP 5.6 之前的版本不完全支持 WEBP,并且可能导致图像变绿。在 Windows 上的 PHP 进行了测试。