n3m3s7s/yajit

另一种即时 PHP 图像处理器

dev-master / 1.1.x-dev 2014-05-26 10:40 UTC

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 updatecomposer 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}" />

该扩展接受四个数字设置和一个文本设置来处理。

  1. 模式
  2. 宽度
  3. 高度
  4. 参考位置(仅用于裁剪)
  5. 背景颜色(仅用于裁剪)

有四种可能的模式

  • 0
  • 1 调整大小
  • 2 调整大小和裁剪(在示例中使用)
  • 3 裁剪
  • 4 调整大小以适应

如果您使用模式 23 裁剪图像,您需要指定参考位置(重力)

+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+

如果您使用模式 23 裁剪图像,还有一个可选的第五个参数用于背景颜色。这可以接受简写或完整的十六进制颜色。

  • 对于 .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 需要第六个参数,外部(其中第四和第五个参数可能是可选的),它只是 10。默认情况下,此参数为 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请求来攻击您的服务器。

菜谱可以在安装之间复制,更改将反映使用此菜谱的每个图像。