我知道有很多关于 CI 生成缩略图等方面的文章,但我想解释一下我做了什么,看看我能找到什么样的最佳实践建议。这是我的故事……</p>
目前,我有一个网站,允许用户在首次创建帐户后将照片集上传到他们创建的项目中。创建帐户后,该站点以下列方式为用户为五个预定义项目中的每一个生成文件夹:
/students/username/project_num/images/thumbs/
(也就是说,在预先创建的学生文件夹中,username、project_num、images 和 thumbs 文件夹会递归创建五次。)
当用户将图像上传到项目时,我有一个画廊控制器,它将完整的图像上传到 project_num 的图像文件夹中,然后创建一个较小的缩略图来保持其比例。到现在为止还挺好。
在显示这些缩略图和完整图像的网站的索引页面上,我有点脑筋急转弯,以为我可以简单地输出完整图像,同时通过 css 调整它的大小以获得“中等大小”图像,这将导致单击时变为全尺寸图像。
(要清楚,路径是:点击缩略图—>通过ajax将缩放的全尺寸(中尺寸)图像加载到拇指上方的显示区域—>单击中尺寸图像—>通过灯箱加载全尺寸图像,或类似的东西。)
到目前为止,我已经完成了所有工作,除了正如人们想象的那样,使用 css 调整全尺寸图像的大小并不能保持拇指的纵横比,这意味着我需要找到调整这些大小的最佳方法。
在考虑它时,我认为我有两个选择:
当用户单击缩略图以通过 ajax 加载中等大小的图像时,我可以即时调整图像的大小。(我的画廊控制器中有一个方法'get_image($ url)',它只是加载带有图像标签的视图和传递给它的图像源等)我想也许我可以先将它发送到我的画廊模型,调整大小它在飞行中,并将其发送到视图。我遇到的问题是动态调整它的大小并回显它会给我原始图像数据(我很抱歉,我不知道这是正确的术语)。我尝试使用 data_uris 将原始数据格式化为可回显的内容,但没有成功。这种方法可行吗?
我考虑的第二个选项是在用户上传图片时生成第二个中等大小的缩略图,并将维护比率设置为 true。这种方法不太理想,因为在为用户提供删除项目的方法时,我需要扫描另外一组要删除的图像。绝对不是什么大不了的事,但我认为可以通过动态生成中等大小的图像来避免一些事情。
我希望我的解释很清楚,如果啰嗦的话!我很想知道人们对处理这个问题的最佳方法有什么建议。
非常感谢您的阅读,任何建议都非常感谢!
史蒂夫·K。