simkimsia / imagine

该软件包最新版本(dev-master)没有提供许可证信息。

维护者

详细信息

github.com/simkimsia/Imagine

源代码

安装: 6

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 36

类型:cakephp-plugin

dev-master 2013-04-13 08:57 UTC

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

缓存和存储

此插件负责您如何存储或缓存图像,但它将提供一些基于哈希或唯一字符串的缓存图像的帮助方法。

这是一个设计决策,因为每个人都喜欢以不同的方式实现文件存储。因此,如何存储生成的图像取决于您。