rezozero / slir
SLIR(智能Lencioni图像缩放器)可以调整图像大小,智能锐化,根据宽高比裁剪,填充透明GIF和PNG的颜色,并缓存不同版本以获得最佳性能。
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: ~4.3.5
This package is not auto-updated.
Last update: 2020-01-20 04:05:28 UTC
README
弃用通知
SLIR现在已被弃用,转而使用基于强大的image-intervention PHP框架的ambroisemaupate/intervention-request库。您应考虑迁移到这个新库,它保留了相同的URL指南。
SLIR(智能Lencioni图像缩放器)可以调整图像大小,智能锐化,根据宽高比裁剪,填充透明GIF和PNG的颜色,并缓存不同版本以获得最佳性能。
如有疑问或需要支持,请使用问题跟踪器。
需求
设置独立版本
- 下载并解压到您的网站根目录中的某个目录。我建议将SLIR放在
/slir/
以方便使用。例如,如果您的网站是http://yourdomain.com
,那么SLIR将在http://yourdomain.com/slir/
。 - 运行
composer install
以生成自动加载器和依赖项。 - 使用
slirconfig-sample.class.php
文件创建自己的SLIRConfig.php
类。如果您想使用命名空间配置类,必须使用完整的类名定义全局常量SLIR_CONFIG_CLASSNAME
。例如:define('SLIR_CONFIG_CLASSNAME','\MyCompany\Utils\SLIRConfig');
,然后SLIR将查找此类以使用静态配置。 - 配置SLIR后,在您的浏览器中访问
http://yourdomain.com/slir/install/
。
在类似symfony的环境中作为库设置
- 将SLIR添加到您的项目
composer.json
作为Packagist存储库。
{ "require": { "rezozero/slir": "2.1.*" } }
- 运行
composer update
以执行供应商更改。Composer将SLIR下载到您的vendor/
文件夹并创建PSR-4自动加载器。 - 创建您的
SLIRConfig
类
namespace MyBundle\Utils; /** * SLIR Config Class * * @since 2.0 * @author Joe Lencioni <joe@shiftingpixel.com> * @package SLIR */ class SLIRConfig extends \SLIR\SLIRConfigDefaults { public static function init() { static::$garbageCollectDivisor = 400; static::$garbageCollectFileCacheMaxLifetime = 345600; static::$browserCacheTTL = 604800; // 7*24*60*60 static::$pathToCacheDir = YOUR_PROJECT_ROOT.'/cache'; static::$pathToErrorLog = YOUR_PROJECT_ROOT.'/files/slir-error-log'; static::$documentRoot = YOUR_PROJECT_ROOT.'/files'; static::$urlToSLIR = '/assets'; // Tell SLIR to listen after "/assets" route static::$maxMemoryToAllocate = 64; // This must be the last line of this function parent::init(); } } SLIRConfig::init();
- 创建处理SLIR的路由
# # routes.yml # SLIRProcess: path: /assets/{queryString}/{filename} defaults: { _controller: \MyBundle\Controllers\AssetsController::slirAction } requirements: { queryString : "[a-zA-Z0-9\-]+", filename : "[a-zA-Z0-9\-_\.\/]+" }
- 创建您的资产控制器
// In AssetsController.php class /** * Handle images resize with SLIR vendor * * @param string $queryString * @param string $filename * @return void */ public function slirAction($queryString, $filename) { define('SLIR_CONFIG_CLASSNAME','\MyBundle\Utils\SLIRConfig'); $slir = new \SLIR\SLIR(); $slir->processRequestFromURL(); // SLIR handle response by itself // Do not return anything }
使用
要使用SLIR,放置一个<img>
标签,其src
属性指向SLIR的路径(通常是"/slir/"),然后跟参数,然后跟要调整大小的源图像的路径(例如<img src="/slir/w100/path/to/image.jpg"/>
)。所有参数遵循一个字母代码然后是参数值的模式
参数 | 含义 | 示例 |
---|---|---|
w | 最大宽度 | /slir/w100/path/to/image.jpg |
h | 最大高度 | /slir/h100/path/to/image.jpg |
c | 裁剪比例 | /slir/c1x1/path/to/image.jpg |
q | 质量 | /slir/q60/path/to/image.jpg |
b | 背景填充颜色 | /slir/bf00/path/to/image.png |
p | 渐进式 | /slir/p1/path/to/image.jpg |
g | 灰度 | /slir/g1/path/to/image.jpg |
使用短横线分隔多个参数:/slir/w100-h100-c1x1/path/to/image.jpg
示例
将图像调整到最大宽度100像素和最大高度100像素
<img src="/slir/w100-h100/path/to/image.jpg"/>
将图像调整并裁剪成方形
<img src="/slir/w100-h100-c1x1/path/to/image.jpg"/>
将图像调整并裁剪到精确尺寸
为此,您只需使裁剪比例与所需的宽度和高度相匹配即可。例如,如果您想使图像正好150像素宽和100像素高,您可以这样做
<img src="/slir/w150-h100-c150x100/path/to/image.jpg"/>
或者,更简洁地说
<img src="/slir/w150-h100-c15x10/path/to/image.jpg"/>
然而,SLIR不会放大图像。所以,如果您的源图像小于所需的大小,您需要使用CSS将其调整为正确的大小。
调整JPEG图像大小,不交错(用于Flash)
<img src="/slir/w100-p0/path/to/image.jpg"/>
使用#990000修边PNG
<img src="/slir/b900/path/to/image.png"/>
不使用mod_rewrite(不推荐)
<img src="/slir/?w=100&h=100&c=1x1&i=/path/to/image.jpg"/>
更改SLIR请求URL
<img src="/assets/w150-h100-c15x10/path/to/image.jpg"/>
您可以将SLIR请求URL更改为使用自己的重写引擎进行处理。只需定义SLIRConfig::$urlToSLIR
为您相对于文件夹的路径:在这里是/assets
。
图像文件名中的特殊字符(例如+
)
包含特殊字符的文件名必须进行URL编码(例如,加号+
应编码为%2B
),以便SLIR能够正确识别它们。这可以通过使用PHP的rawurlencode()
函数来实现。
<img src="/slir/w100/path/to/image%2Bfile.jpg"/>
支持SLIR
如果您想支持SLIR或表达对开发此项目的感谢,请进行财务捐助。
有关更多文档,请打开您喜欢的文本编辑器中的core/SLIR.php
。