tuupola/slim-image-resize

此包已被废弃,不再维护。没有建议的替代包。

Slim 框架的图像缩放中间件

0.6.1 2015-01-28 05:51 UTC

This package is auto-updated.

Last update: 2022-04-12 06:41:18 UTC


README

此中间件根据图像文件名自动执行图像缩放。

Author Software License Build Status HHVM Status Coverage

安装

您可以使用 composer 安装最新版本。

$ composer require tuupola/slim-image-resize

配置

配置选项以数组形式传递。没有强制参数。

$app = new \Slim\Slim();
$app->add(new Slim\Middleware\ImageResize());

您可以配置允许的图像扩展名和缓存文件夹。缓存文件夹必须可由 web 服务器进程写入。图像质量仅适用于 jpg 图像。下面显示的示例选项也是中间件使用的默认选项。

$app = new \Slim\Slim();
$app->add(new Slim\Middleware\ImageResize([
    "extensions" => ["jpg", "jpeg", "png", "gif"],
    "cache" => "cache",
    "quality" => 90
]));

缓存

为了使缓存工作,您还必须在您的 .htaccess 文件中添加以下内容。这些规则应在 Slim 重写规则之前添加。文件夹名称必须与您在中间件配置选项中传递的名称相同。启用缓存重写规则后,只有第一个请求由 PHP 提供。所有后续请求都由缓存文件夹中的静态文件提供。

# Check for cached image in cache folder.
RewriteCond %{REQUEST_METHOD} ^GET$
RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI} -f
RewriteRule ^(.*)$ /cache/$1 [L,QSA]

如果您的 Slim 应用程序安装在一个子文件夹中,请使用以下重写规则代替。此示例假设子文件夹名为 example

RewriteBase /example

# Check for cached image in cache folder.
RewriteCond %{REQUEST_METHOD} ^GET$
RewriteCond %{DOCUMENT_ROOT}/example/cache/%{REQUEST_URI} -f
RewriteRule ^(.*)$ /example/cache/example/$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

使用

配置中间件后,您可以通过更改文件名创建不同大小的图像。

<!-- This is the original image -->
<img src="images/viper.jpg">
<!-- Images below will be resized -->
<img src="images/viper-400x200.jpg">
<img src="images/viper-x200.jpg">
<img src="images/viper-200x.jpg">
<img src="images/viper-100x100.jpg">

上面的 HTML 将生成以下图像。

Original 400x200 x200 200x 100x100

安全性

默认情况下,可以创建任何大小的图像。如果图像也进行了缓存,则应限制中间件允许创建的大小。否则,可以创建任意数量不同大小的图像请求。

$app = new \Slim\Slim();
$app->add(new Slim\Middleware\ImageResize([
    "sizes" => ["400x200", "x200", "200x", "100x100"]
]));

如果您有任意数量的不同大小,还可以使用密钥对图像进行签名。

$app->add(new Slim\Middleware\ImageResize([
    "secret" => "s11kr3t"
]));

您必须将签名包含在图像名称中。

<img src="images/viper-400x200-175ecbf97b7faebb.jpg">

以上图像的签名是用以下代码生成的。

$sha1 = sha1("400x200:s11kr3t");
$signature = substr($sha1, 0, 16);