ajur-media / php_gdwrapper
GD的包装器
1.99.3
2024-09-13 12:28 UTC
Requires
- php: ^7.4 | 8.*
- ext-ffi: *
- ext-gd: *
- psr/log: *
Requires (Dev)
- rector/rector: ^1.2
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
的日志记录器,例如Monolog
或Arris\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_WEBPvalid
- 最后一次处理是否成功(例如,从文件中加载图像)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