simkimsia / imagine
Requires
- composer/installers: ~1.0
- imagine/imagine: 0.4.*
This package is not auto-updated.
Last update: 2024-09-14 13:50:43 UTC
README
设置
添加外部Imagine库
您需要初始化Imagine的git子模块
git submodule update --init
或者从https://github.com/avalanche123/Imagine 获取
将Imagine复制到插件供应商文件夹Vendor/Imagine中,Imagine软件包的根目录应位于此文件夹中。如果正确放置了代码,Vendor/Imagine/README.md应该存在。
盐值
您需要为Imagine的安全功能配置一个盐值。
Configure::write('Imagine.salt', 'your-salt-string-here');
我们故意不使用Security.salt,因为我们不希望出于安全原因在此处使用相同的盐值。
加载插件
在您的引导文件中加载imagine插件,请记住使用插件引导,如下所示
CakePlugin::load('Imagine' => array('bootstrap' => true));
Imagine助手
该助手将通过命名参数生成图像URL,以获取缩略图或执行所需的其他操作,并哈希该URL。
可以使用Imagine组件来检查哈希值,以避免有人尝试通过增加请求缩略图的大小来降低您的页面性能,从而在服务器上生成数千张图像。
$url = $this->Imagine->url(
array(
'controller' => 'images',
'action' => 'display',
1),
array(
'thumbnail' => array(
'width' => 200,
'height' => 150)));
echo $this->Html->image($url);
关于高流量网站的特别说明
您不应该在高流量网站上动态生成图像,因为这可能会因为过多的请求而导致您的服务器锁定!
第一次请求将击中您的服务器并开始生成图像,而其他请求将尝试同时进行,这可能导致在最坏的情况下网站锁定。
更好的做法是在上传图像后生成所需的版本,如果以后需要其他版本,可以通过shell脚本来生成它们。
为此,ImagineBehavior中有一个方法可以将图像操作数组转换为字符串,请参阅ImagineBehavior::paramsAsFilestring();
在您的图像后附加由该方法生成的字符串,以便能够批量删除缓存的具有其版本的文件。这种用法的目的是将文件存储为my_horse.thumbnail+width-100-height+100.jpg等。
因此,在上传后,将图像元数据存储在数据库中,将文件名设置为记录的ID,并附加此字符串,并将该字符串也存储在数据库中。在视图中,如果不需要进一步控制图像访问,可以直接链接图像,例如$this->Html->image('/images/05/04/61/my_horse.thumbnail+width-100-height+100.jpg');
。
Imagine组件
Imagine组件执行以下操作
- 如果配置了操作,它将自动验证是否通过URL中的命名参数传递了ImagineHelper的有效哈希值
- 从URL获取哈希值:getHash()
- 根据命名参数验证哈希值:checkHash()
- 自动解包打包的命名参数:unpackParams()
Imagine行为
该行为与组件交互,并将一组应用于给定图像文件的操作进行处理。请参阅ImagineBehavior::processImage()。
Imagine实例
使Imagine实例可用于模型。通过调用
$this->imagineObject();
或直接通过行为
$this->Behaviors->Imagine->Imagine
缓存和存储
此插件不负责您如何存储或缓存图像,但它将提供一些基于哈希或唯一字符串的缓存图像的帮助方法。
这是一个设计决策,因为每个人都喜欢以不同的方式实现文件存储。因此,如何存储生成的图像取决于您。