【问题标题】:Best Practice for Images with Codeigniter : Generating Thumbs or Resizing on the Fly使用 Codeigniter 处理图像的最佳实践:生成拇指或动态调整大小
【发布时间】:2010-04-29 17:42:56
【问题描述】:

我知道有很多关于 CI 生成缩略图等方面的文章,但我想解释一下我所做的事情,看看我能找到什么样的最佳实践建议。这是我的故事……

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

/students/username/project_num/images/thumbs/

(也就是说,在预先创建的学生文件夹中,username、project_num、images 和 thumbs 文件夹会递归创建五次。)

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

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

(要清楚,路径是:点击缩略图—>通过ajax将缩放的全尺寸(中尺寸)图像加载到拇指上方的显示区域—>单击中尺寸图像—>加载全尺寸图像通过灯箱,或类似的东西。)

到目前为止,我已经完成了所有工作,但正如人们想象的那样,使用 css 调整全尺寸图像的大小并不能保持拇指的纵横比,这意味着我需要找到调整这些大小的最佳方法。

考虑到这一点,我认为我有两个选择:

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

  2. 我考虑的第二个选项是在用户上传图片时生成第二个中等大小的缩略图,并将维护比率设置为 true。这种方法不太理想,因为在为用户提供删除项目的方法时,我需要扫描另外一组要删除的图像。绝对不是什么大问题,但我认为可以通过动态生成中等大小的图像来避免这种情况。

我希望我的解释很清楚,如果啰嗦的话!我很想知道人们对处理这个问题的最佳方法有什么建议。

非常感谢您的阅读,任何建议都非常感谢!

史蒂夫·K。

【问题讨论】:

    标签: codeigniter resize-image


    【解决方案1】:

    您不希望为每张图像多次调整图像大小等计算困难的事情。那太贵了。

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

    【讨论】:

    • 感谢您的建议。对于这个特定的项目,由于它的规模和用户数量都很低,因此将图像大小调整 3 次在资源上并不是非常困难。但是,对于更大更严肃的项目,您的建议是正确的,我很感激。我还考虑过将图像文件名/位置存储在数据库中,我真的应该这样做,因为它会为我节省很多时间。谢谢你的智慧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2012-09-10
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2011-03-23
    • 2011-07-09
    相关资源
    最近更新 更多