跳转到主要内容

为绑定记录生成缩略图

项目描述

Alpha License: AGPL-3 OCA/search-engine Translate me on Weblate Try me on Runboat

此模块是一个技术模块,旨在简化将图像缩略图导出到搜索引擎索引的过程。

它通过添加用于从要索引的图像获取和生成缩略图的专业方法,扩展了connector_search_engine模块的功能。

目录

用例/上下文

当您将图像导出到索引时,您可能希望确保以适合将索引消耗的应用程序格式和大小导出图像。

此模块依赖于fs_image_thumdbnail模块。此模块提供了一个方法和一个混入,用于从FSImageValue对象生成缩略图。

配置

如果您想强制生成缩略图的格式,请在Odoo中定义一个配置参数,其键为fs_image_thumbnail.resize_format,其值为PNG、JPEG、GIF或ICO。否则,生成的缩略图的格式将与原始图像的格式相同。

使用方法

如指定,此模块在安装后不会自行添加任何新功能。作为开发者,您可以依赖此模块,利用一组专门的方法,这些方法可以用于从您想要索引的图像中获取和生成缩略图。

在幕后,此模块通过添加2个新方法扩展了 se.indexable.recor 模型:

  • _get_or_create_thumbnails_for_multi_images:此方法用于获取或为一系列图像创建缩略图。

  • _get_or_create_thumbnails_for_image:此方法用于获取或为单个图像创建缩略图。

有了这些方法,您可以通过三种不同的方式轻松地为存储在Odoo中的图像生成缩略图

  • 一个关系字段,引用继承自 fs.image.relation.mixin 的记录。

  • Odoo的图像字段。

  • FSImage字段。

通过在 se.thumbnail.size 模型中创建新记录来配置这些方法生成的缩略图大小。此模型允许您通过搜索引擎后端、模型和字段定义缩略图的大小。例如,您可以在将图像导出到 opensearch_xyz 后端时,为 product.template 模型和 image 字段定义生成 100x100 大小的缩略图。这样,您可以轻松地为不同的搜索引擎后端、模型和字段定义不同的缩略图大小,以满足您的需求。

缩略图始终为单个图像和特定的 base_name 而检索和生成。基本名称用作键来标识与使用相关的图像的缩略图,也用作生成的缩略图文件名的基准名称。默认情况下,base_name 是从包含图像的记录的显示名称计算得出的,以确保良好的SEO。为了避免特殊字符引起的问题,base_name 在使用之前会被规范化。

以下是如何使用这些方法的示例

from odoo import models, fields
from odoo.addons.fs_imeage.fields import FSImage


class ProductImageRelation(models.Model):
    _name = "product.image.relation"
    _inherit = ["fs.image.relation.mixin"]

    name = fields.Char(required=True)
    product_id = fields.Many2one(
        "product.product",
        required=True,
        ondelete="cascade",
    )


class ProductProduct(models.Model):
    _name = "product.product"
    _inherit = ["se.indexable.record", "product.product"]

    name = fields.Char(required=True)
    image = fields.Image(required=True)
    image_ids = fields.One2many(
        "product.image.relation",
        "product_id",
        string="Images",
    )
    fs_image = FSImage(required=True)



# A creation is always done for a given se.index record.
index = self.env["se.index"].browse(1)
product = self.env["product.product"].browse(1)

# Get or create thumbnails for a single image
for (thumbnail_size, thumbnail) in product._get_or_create_thumbnails_for_image(
    index,
    field_name="image",
    ):
    # Do something with the thumbnail
    print(f"Thumbnail  for image with size {thumbnail_size.display_name} "
        "is available at url {thumbnail.image.url}")

# Get or create thumbnails for a single image
for (thumbnail_size, thumbnail) in product._get_or_create_thumbnails_for_image(
    index,
    field_name="fs_image",
    ):
    # Do something with the thumbnail
    print(f"Thumbnail for fs_image with size {thumbnail_size.display_name} "
        "is available at url {thumbnail.image.url}")


# Get or create thumbnails for a set of images
thumbnails_by_image = product._get_or_create_thumbnails_for_multi_images(
    index,
    field_name="image_ids",
    )

for (image, thumbnails) in thumbnails_by_image.items():
    for (thumbnail_size, thumbnail) in thumbnails:
        # Do something with the thumbnail
        print(f"Thumbnail for image {image.name} with size "
            "{thumbnail_size.display_name} is available at url "
            "{thumbnail.image.url}")

变更日志

16.0.1.0.5 (2024-04-10)

错误修复

  • 在搜索引擎后端添加了新的配置参数,允许用户指定如果请求缩略图但未为请求的模型和字段定义缩略图大小,序列化记录是否应失败。默认为False(即不失败)。(《https://github.com/OCA/search-engine/issues/176》#176)

16.0.1.0.4 (2024-04-09)

错误修复

  • 修复了图像大小查找。

    在序列化记录和生成缩略图时,现在在索引中查找缩略图大小。在此更改之前,只查找与当前索引关联的模型定义的大小。这意味着如果您尝试序列化具有在不同模型上定义的图像字段的嵌套记录,则找不到缩略图大小,并抛出错误。查找方法现在将生成缩略图的记录作为参数,以便可以使用正确的模型查找缩略图大小。您仍然需要为索引中序列化的每个模型定义缩略图大小。

    修复了创建新缩略图大小时的用户界面错误。

    在创建新记录时,用户界面会抛出错误。这是由于应用限制可能图像字段选择范围的域的计算。当记录是新的时候,没有设置模型,因此字段域必须是空的。现在这已被正确处理。(《https://github.com/OCA/search-engine/issues/174》#174)

错误跟踪器

错误在GitHub Issues上跟踪。如有问题,请检查您的问题是否已经被报告。如果您是第一个发现它的人,请通过提供详细且受欢迎的反馈来帮助我们解决问题。

请不要直接联系贡献者以获取支持或技术问题的帮助。

致谢

作者

  • ACSONE SA/NV

贡献者

其他致谢

本模块的开发得到了以下机构的财务支持:

-Alcyon Belux

维护者

此模块由OCA维护。

Odoo Community Association

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。

当前维护者

lmignon

此模块是GitHub上的OCA/search-engine项目的一部分。

欢迎您做出贡献。要了解如何贡献,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

此版本没有可用的源分发文件。请参阅生成分发存档的教程

构建分发

由以下机构支持