【发布时间】:2012-03-10 09:17:22
【问题描述】:
我在网上搜索我的问题,但找不到明确的答案或任何示例。
基本上,我想使用 sorl 并希望在模型保存期间调整源图像的大小以将其调整为 640x480 大小,这样我就不会最终将用户的原始 2.5 MB 文件存储在磁盘上。然后,我将使用模板标签从我的源文件中创建常规缩略图,如 sorl 中所述。
我遇到了几个来源,指的是使用应该在 sorl.thumbnail.fields 中可用的 ThumbnailField 模型字段。请参阅链接here。但是,在我从树干获取的最新 sorl 副本中,我没有看到任何 ThumbnailField 或 ImageWithThumbnailsField。我尝试在模型中导入它相应地失败了。虽然我看到这些参考资料很旧,但我想知道我是否可以使用最新的 sorl 实现同样的效果。
另一方面,sorl 文档仅指出来自 sorl.thumbnail 的 ImageField(请参阅 here)没有任何大小参数来控制源调整大小。
顺便说一句,我看到easy_thumbnail提供了这个功能,它采用输入参数source_resize。
任何帮助将不胜感激!
摘要
我接受了以下答案,但是我觉得对这个用例的自然 sorl 支持可能非常有用 - 即将 resize_source 参数添加到 sorl 的 ImageField 以允许调整源图像的大小。以下是这在该领域有用的两个因素:
如果您的应用不需要,不要存储用户的巨大原始图像。节省磁盘空间。
如果您没有特定的极高质量原因,则不要花费额外的 CPU 来调整来自巨大源图像的缩略图大小。为了避免这种情况,可能会在模板中编写嵌套标签以从较小尺寸的图像中获取缩略图,但它很快就会变得烦人。
【问题讨论】:
-
所以您希望用户上传的图片在应用任何缩略图裁剪之前调整到可管理的宽度和高度?
-
是的,基本上我想将源文件始终保存在磁盘上以适应 640x480 的盒子。
-
我感觉 get_thumbnail 会帮助我做到这一点 - example here。但是,我希望有人确认这是唯一的情况,并建议在 ModelForm 保存期间如何最好地实现这一点。例如,我应该使用预创建信号或类似信号来实现这一点吗??
标签: django thumbnails image-resizing sorl-thumbnail