silencesoft / slim-image-resize
用于Slim框架的图像调整大小中间件
0.7.0
2019-01-12 23:00 UTC
Requires
- intervention/image: ~2.0
- slim/slim: ~3.0
Requires (Dev)
- phpunit/phpunit: ~4.3
- squizlabs/php_codesniffer: ~1.5
This package is not auto-updated.
Last update: 2024-10-01 01:16:08 UTC
README
注意
这是对原始项目tuupola/slim-image-resize的更新,使其能够与Slim 3兼容。
此中间件实现了基于图像文件名的自动图像调整大小。
安装
您可以使用 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将生成以下图像。
安全性
默认情况下,可以创建任何尺寸的图像。如果图像也进行缓存,则应限制中间件允许创建的尺寸。否则,可能会创建任意数量的不同尺寸的图像请求。
$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);