rezozero/slir

此软件包已废弃,不再维护。未建议替代软件包。

SLIR(智能Lencioni图像缩放器)可以调整图像大小,智能锐化,根据宽高比裁剪,填充透明GIF和PNG的颜色,并缓存不同版本以获得最佳性能。

2.1.3 2015-01-30 13:33 UTC

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&amp;h=100&amp;c=1x1&amp;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