n3m3s7s / yajit
另一种即时 PHP 图像处理器
Requires
- php: >=5.3.0
- ext-gd: *
- intervention/image: 2.*
This package is auto-updated.
Last update: 2024-09-17 23:57:51 UTC
README
另一种即时 PHP 图像处理
由 Fabio Politi (n3m3s7s@gmail.com) 提供
通过 URL 以简单方式“即时”处理图像。支持缓存、食谱、图像质量设置和加载外部图像。
安装
将 "n3m3s7s/yajit" 添加到 composer.json 中的需求
{ "repositories": [ { "type": "vcs", "url": "https://github.com/n3m3s7s/yajit.git" } ], "require": { "n3m3s7s/yajit": "1.1.*@dev" } }
然后运行 composer update
或 composer install
;
警告:强烈建议在 composer 下载并安装所有包之后运行命令 "composer dump-autoload --optimize";
现在,如果您使用的是 Apache,请打开您项目的 .htaccess 文件或创建一个新的;将此规则添加到 .htaccess 文件
RewriteEngine On
### IMAGE RULES
RewriteRule ^i\/(.+)$ yajit.php?param=$1 [B,L,NC]
如果您使用的是 Nginx,您应该在您的 Vhost 配置中添加此规则
# nginx configuration
location /i {
rewrite ^/i\/(.+)$ /yajit.php?param=$1 break;
}
在您的项目根目录下创建一个 "yajit.php" 文件,并用以下代码行填充它 (https://github.com/n3m3s7s/yajit/blob/master/yajit.php)
<?php require 'vendor/autoload.php'; define('WORKSPACE', rtrim(realpath(dirname(__FILE__) ), '/')); use Yajit\Yajit; $yajit = new Yajit(); $yajit->process();
就这样!您现在可以使用 Yajit 动态处理图像!
用法
基础
图像处理是通过 URL 控制的,例如。
<img src="{$root}/i/2/80/80/5/fff{image/@path}/{image/filename}" />
该扩展接受四个数字设置和一个文本设置来处理。
- 模式
- 宽度
- 高度
- 参考位置(仅用于裁剪)
- 背景颜色(仅用于裁剪)
有四种可能的模式
0
无1
调整大小2
调整大小和裁剪(在示例中使用)3
裁剪4
调整大小以适应
如果您使用模式 2
或 3
裁剪图像,您需要指定参考位置(重力)
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
如果您使用模式 2
或 3
裁剪图像,还有一个可选的第五个参数用于背景颜色。这可以接受简写或完整的十六进制颜色。
- 对于
.jpg
图像,如果裁剪大小大于原始大小,建议使用此选项,否则额外的画布将是黑色的。 - 对于透明
.png
或.gif
图像,如果提供背景颜色,则填充图像。这就是为什么该设置是可选的。
额外的第五个参数使 URL 看起来像这样
<img src="{$root}/i/2/80/80/5/fff{image/@path}/{image/filename}" />
- 如果您希望裁剪并保持图像的宽高比,但只有一个固定的尺寸(即宽度或高度),只需将另一个尺寸设置为 0
配置
Yajit 包含一个配置文件,以便修改脚本的运行方式,或启用/禁用某些功能;打开 PHP 文件 vendor/n3m3s7s/yajit/src/Yajit/config/config.php
;默认情况下,它包含所有可以管理的设置
<?php global $settings; $settings = array( 'image' => array( 'cache' => false, 'quality' => 80, 'disable_upscaling' => 'yes', 'disable_regular_rules' => 'no', ), 'server' => array( 'log' => false, 'timezone' => 'Europe/Rome', ) );
如果您想启用文件的“缓存”,可以将变量 'cache' 设置为 TRUE;警告:要正常工作,您必须在 vendor/n3m3s7s/yajit/src/Yajit
中创建一个“cache”文件夹,并且它必须可由您的 PHP/Web服务器账户写入;
外部源 & 受信任站点(仍在进行中)
要从外部源提取图像,您必须设置受信任站点的白名单。为此,编辑“config.php”文件下的“trusted-sites”设置。要匹配任何内容,请使用单个星号(*
)。
然后 URL 需要第六个参数,外部(其中第四和第五个参数可能是可选的),它只是 1
或 0
。默认情况下,此参数为 0
,这意味着图像位于与 YAJIT 相同的域上。将其设置为 1
将允许 YAJIT 处理受信任站点列表中提供的外部图像。
<img src="{$root}/i/1/80/80/1/{full/path/to/image}" />
^ External parameter
菜谱(基本功能)
菜谱是针对YAJIT设置的命名规则,有助于提高安全性,并更方便使用。打开文件vendor/n3m3s7s/yajit/src/Yajit/config/recipes.php
。一个菜谱URL可能看起来像这样:
<img src="{$root}/i/thumbs{image/@path}/{image/filename}" />
当YAJIT解析这样的URL时,它会检查带有thumbs
处理器的菜谱文件并应用其规则。您可以完全禁用动态YAJIT规则,并选择只使用菜谱,这将防止恶意用户通过大量或多个YAJIT请求来攻击您的服务器。
菜谱可以在安装之间复制,更改将反映使用此菜谱的每个图像。