我正在开发一个网站:
在这个项目中有很多图像,所有图像都有一个丑陋的黄色边框。为了删除这个边框,我需要对所有图像进行修剪。
每张图片都有自己的焦点区域(由wagtail提供的功能),一个排除黄色边框的框。然而,在这种情况下,用于裁剪wagtail的标准工具是无用的,为了实现我的目标,我决定使用简易缩略图。
这里是一个代码示例,其中我使用image_object的focal_point来设置裁剪操作所需的所有参数:
parameters = {
'size': (width, height),
'crop': True,
'detail': False,
'upscale': False,
}
if image_object.has_focal_point():
focal_point = image_object.get_focal_point()
parameters['box'] = "%s,%s,%s,%s" % (
int(focal_point.left),
int(focal_point.top),
int(focal_point.right - focal_point.left),
int(focal_point.bottom - focal_point.top),
)
return get_thumbnailer(image_object.file).get_thumbnail(parameters, generate=True).url
我的问题是关于“盒子”参数。我无法在简单的缩略图文档中找到它,但我找到了在互联网上使用的例子。
谁能告诉我在哪里可以找到任何关于它的参考?或者至少是get_thumbnail方法允许的所有参数的列表?
提前致谢, nifel87
答案 0 :(得分:0)
虽然我从未尝试过针对这种特定情况,但是rendition resizing方法允许参数crop closer to the focal point,这可能会有所帮助:
默认情况下,Wagtail只能裁剪足以改变宽高比 图像的大小与调整大小规则中的比率相匹配。
在某些情况下(例如缩略图),可能更接近裁剪 到焦点,使图像的主题更多 突出。
你可以通过在结尾添加-c来实现 调整规则。例如,如果您希望将图像裁剪为 尽可能接近其焦点,添加-c100:
{% image page.photo fill-200x200-c100 %}
这将尽可能多地裁剪图像,而不会裁剪成图像 焦点。
如果发现-c100太靠近,可以尝试-c75或-c50。任何 整数从0到
如果您希望generate the image rendition in Python,则Image.get_rendition
可以使用相同的调整规则。
另一个更复杂的解决方案是创建自己的过滤器(a.k.a. resizing规则),尽管我担心它没有记录。请查看implementation of the built-in filters以及如何register them。祝你好运。