0

我正在开发一个网站:

  • Python
  • 姜戈
  • 鹡鸰

在这个项目中有很多图像,它们都有一个难看的黄色边框。为了删除这个边框,我需要系统地裁剪所有图像。

每个图像都有自己的焦点区域(由 wagtail 提供的功能),一个不包括黄色边框的框。然而,用于裁剪的标准工具 wagtail 在这种情况下是无用的,为了实现我的目标,我决定使用简单的缩略图。

这是我使用 image_object 的焦点来设置裁剪操作所需的所有参数的代码示例:

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

我的问题是关于“box”参数。我在简单的缩略图文档中找不到它,但我在互联网上找到了使用示例。

谁能告诉我在哪里可以找到有关它的任何参考资料?或者至少是 get_thumbnail 方法允许的所有参数的列表?

在此先感谢 nifel87

4

1 回答 1

0

尽管我从未针对这种特定情况尝试过,但渲染大小调整方法允许将参数裁剪得更接近焦点,这可能会有所帮助:

默认情况下,Wagtail 只会裁剪到足以改变图像的纵横比以匹配调整大小规则中的比例。

在某些情况下(例如缩略图),最好在靠近焦点处进行裁剪,以便图像的主体更加突出。

您可以通过在调整大小规则的末尾附加 -c 来做到这一点。例如,如果您希望图像尽可能靠近其焦点进行裁剪,请添加 -c100:

{% image page.photo fill-200x200-c100 %}

这将尽可能多地裁剪图像,而不会裁剪到焦点。

如果你发现 -c100 太接近,你可以试试 -c75 或 -c50。从 0 到任何整数

Image.get_rendition如果您希望在 Python 中生成图像再现,可以使用相同的调整大小规则。


另一个更复杂的解决方案是创建自己的过滤器(也就是调整大小规则),尽管恐怕它没有记录。查看内置过滤器的实现以及如何注册它们。祝你好运。

于 2018-01-11T23:18:36.513 回答