Easy-Thumbnails是否使用“box”参数来裁剪图像?

时间:2018-01-10 08:22:50

标签: python django wagtail easy-thumbnails

我正在开发一个网站:

  • 的Python
  • Django的

在这个项目中有很多图像,所有图像都有一个丑陋的黄色边框。为了删除这个边框,我需要对所有图像进行修剪。

每张图片都有自己的焦点区域(由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

1 个答案:

答案 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。祝你好运。