ajur-media/php_gdwrapper

GD的包装器

1.99.3 2024-09-13 12:28 UTC

This package is auto-updated.

Last update: 2024-09-13 12:30:47 UTC


README

初始化

GDWrapper::init($options = [], $logger = null)
  • $options - 通过关联数组传递选项(空数组表示默认选项)
    • JPEG_COMPRESSION_QUALITY - 原始JPEG的压缩级别,[1..100],默认为92。
    • WEBP_COMPRESSION_QUALITY - WEBP的压缩级别,[1..100],默认为80。
    • PNG_COMPRESSION_QUALITY - PNG的压缩级别 [0..9],默认为0(无压缩)
  • $logger - 实现接口 Psr\Log\LoggerInterface 的日志记录器,例如 MonologArris\AppLogger::scope()null

使用一个日志级别 - error - 如果处理的文件不存在。

初始化示例

use AJUR\Wrappers;
use Arris\AppLogger;

AppLogger::addScope('gdwrapper', [ 'gd_error.log' , Logger::ERROR, 'enabled' => getenv('LOGGING.GDWRAPPER_ERRORS'));

GDWrapper::init([], AppLogger::scope('gdwrapper'));

GDImageInfo

GDWrapper的所有方法都返回包含关于最终图像信息的GDImageInfo类的实例

{
  "valid":true,
  "error_message":"",
  "width":200,
  "height":135,
  "type":2,
  "mime":"image\/jpeg",
  "mime_extension":".jpeg",
  "filename":"test_RIA.jpg",
  "extension":"jpg",
  "quality":40,
  "data":null
}
  • extension - 根据filename定义的扩展名(不带点)
  • mime - 文件mime类型
  • mime_extension - 根据mime类型定义的扩展名(带点)
  • quality - 图像压缩质量
  • type - 类型,见常量IMAGETYPE_BMP, IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF, IMAGETYPE_WEBP
  • valid - 最后一次处理是否成功(例如,从文件中加载图像)
  • error_message - 错误信息

重要:此类不会抛出异常。

GDWrapper的方法

cropImage(string $fn_source, string $fn_target, array $xy_source, array $wh_dest, array $wh_source, $quality = null):GDImageInfo

裁剪图像并保存到文件

resizeImageAspect(string $fn_source, string $fn_target, int $maxwidth, int $maxheight, $image_quality = null):GDImageInfo

将图像内嵌到指定的尺寸中

resizePictureAspect(string $fn_source, string $fn_target, int $maxwidth, int $maxheight, $image_quality = null):GDImageInfo

按较大边进行图像缩放

verticalImage(string $fn_source, string $fn_target, int $maxwidth, int $maxheight, $image_quality = null):GDImageInfo

???

getFixedPicture(string $fn_source, string $fn_target, int $maxwidth, int $maxheight, int $image_quality = null):GDImageInfo

将图像缩放到固定尺寸

addWaterMark(string $fn_source, array $params, int $pos_index, $quality = null, string $fn_target = ''):GDImageInfo

在图像上添加水印

  • $fn_source - 图像文件(将被替换)
  • $params - 包含两个选项的数组 [ 'watermark' => 文件名, 'margin' => 外边距]
  • $pos_index - WM_POSITION_LEFT_TOP = 1, WM_POSITION_RIGHT_TOP = 2, WM_POSITION_RIGHT_BOTTOM = 3 , WM_POSITION_LEFT_BOTTOM = 4 的位置
  • $quality - 保存图像时的质量
  • $fn_target - 目标文件,如果指定 - 则不会覆盖 $fn_source

rotate(string $fn_source, string $roll_direction = "", $quality = null):GDImageInfo

TODO

rotate2(string $fn_source, string $roll_direction = "", $quality = null):GDImageInfo

在47news中,作为rotate()的包装器使用,应从此处和47news中删除,并用Rotate替换

flip(string $fn_source, int $mode, $quality = null, string $fn_target = ''):GDImageInfo

使用所选模式翻转图像

  • $fn_source
  • $mode - 翻转模式 - IMG_FLIP_* 中的一个常量
    • IMG_FLIP_HORIZONTAL 水平翻转图像。
    • IMG_FLIP_VERTICAL 垂直翻转图像。
    • IMG_FLIP_BOTH 同时水平和垂直翻转图像。

imageFillColor(string $fn_target, int $width, int $height, array $color, $quality = null):GDImageInfo;

TODO