Codeigniter图像的最佳实践:生成拇指或动态调整大小

时间:2010-04-29 17:42:57

标签: codeigniter resize-image

我知道关于缩略图生成等与CI有很多关系,但我想解释一下我做了什么,看看我能找到什么样的最佳实践建议。这是我的故事......

目前,我有一个网站,允许用户将照片集上传到他们首次创建帐户后创建的项目。创建帐户后,该站点将按以下方式为五个预定义项目中的每一个生成用户文件夹:

/学生/用户名/ project_num /图像/拇指/

(这就是说,在预先创建的学生文件夹中,用户名,project_num,图像和拇指文件夹递归创建五次。)

当用户将图像上传到项目时,我有一个图库控制器,它将完整图像上传到project_num的images文件夹中,然后创建一个较小的缩略图来保持其比例。到目前为止一切都很好。

在网站的索引页面上,显示这些缩略图和完整图像,我有点大脑失误,以为我可以简单地输出完整图像,同时通过css调整大小以获得“中等大小”图像单击时会导致全尺寸图像。

(要清楚,路径是:点击缩略图 - >通过ajax将缩放后的全尺寸(中等尺寸)图像加载到拇指上方的显示区域中>点击中等尺寸的图像 - >加载通过灯箱或者那种性质的全尺寸图像。)

我有一切工作到这一点,除了,正如人们可能想象的那样,用css调整全尺寸图像不会保持拇指的纵横比,这意味着我需要找到调整这些尺寸的最佳方法。 / p>

在考虑它时,我认为我有两个选择:

  1. 当用户点击缩略图以通过ajax加载中等大小的图像时,我可以动态调整图像大小。 (我在我的图库控制器中有一个方法'get_image($ url)',它只是加载带有图像标记的视图,图像源传递给它,等等。)我想也许我可以先将它发送到我的图库模型,调整大小它在飞行中,并将其发送到视图。我遇到的问题是在运行中调整它并将其回显给我原始图像数据(我道歉,我不知道这是正确的术语)。我已经尝试使用data_uris将原始数据格式化为可回复的东西,但没有成功。这种方法可行吗?

  2. 我考虑的第二个选项是当用户上传维护_ratio设置为true的图像时生成第二个中等大小的缩略图。这种方法稍微不太理想,因为在为用户提供删除项目的方法时,我需要扫描一组要删除的图像。绝对不是一件大事,但我想通过动态生成中等大小的图像可以避免这种情况。

  3. 我希望我的解释清楚,如果啰嗦!我很好奇看到人们对处理这个问题的最佳方法有什么建议。

    非常感谢阅读,并且非常感谢任何建议!

    Steve K.

1 个答案:

答案 0 :(得分:1)

您不希望在计算上遇到困难,因为每张图片不止一次调整图像大小。那太贵了。

当访问者上传图片时,只需将其调整两次即可。做一个拇指,并做中拇指。我可能还会在project_id和user_id作为外键的某个数据库表中记录所有上传的图像。他们将避免您“扫描”删除图像。你知道他们在哪里。