tuupola / slim-image-resize
此包已被废弃,不再维护。没有建议的替代包。
Slim 框架的图像缩放中间件
0.6.1
2015-01-28 05:51 UTC
Requires
- intervention/image: ~2.0
- slim/slim: ~2.3
Requires (Dev)
- phpunit/phpunit: ~4.3
- squizlabs/php_codesniffer: ~1.5
This package is auto-updated.
Last update: 2022-04-12 06:41:18 UTC
README
此中间件根据图像文件名自动执行图像缩放。
安装
您可以使用 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 将生成以下图像。
安全性
默认情况下,可以创建任何大小的图像。如果图像也进行了缓存,则应限制中间件允许创建的大小。否则,可以创建任意数量不同大小的图像请求。
$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);