silencesoft/slim-image-resize

用于Slim框架的图像调整大小中间件

0.7.0 2019-01-12 23:00 UTC

This package is not auto-updated.

Last update: 2024-10-01 01:16:08 UTC


README

注意

这是对原始项目tuupola/slim-image-resize的更新,使其能够与Slim 3兼容。

此中间件实现了基于图像文件名的自动图像调整大小。

Author Software License Build Status HHVM Status Coverage

安装

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

$ composer require tuupola/slim-image-resize @dev

配置

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

$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);