OdooWiki OCA HUB

Search Engine Multi Image Thumbnail

search_engine_image_thumbnail folder_open OCA/search-engine open_in_new
Sin categoría Licencia: AGPL-3

Este módulo es un módulo técnico cuyo propósito es facilitar la exportación de miniaturas de imágenes a un índice de motor de búsqueda.

Extiende la funcionalidad del módulo connector_search_engine añadiendo métodos especializados que pueden utilizarse para obtener y generar miniaturas a partir de una imagen que se desea indexar.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 18.0

Configura los tamaños de miniatura por backend de motor de búsqueda, modelo y campo de imagen, para que las miniaturas de imagen se generen e indexen junto con tus registros. Un nuevo menú Thumbnails te permite gestionar los tamaños y ver las miniaturas generadas.

Este módulo conecta los índices de tu motor de búsqueda con las miniaturas de imágenes. Para cada backend de motor de búsqueda puedes definir, por modelo y campo de imagen, qué tamaños de miniatura deben generarse. Un nuevo menú "Thumbnails" (bajo el menú raíz del motor de búsqueda) contiene "Thumbnail Sizes", "Index Thumbnail Sizes" e "Indexed Image Thumbnail".

En el formulario del backend, una nueva sección "Thumbnail Sizes" te permite añadir estas reglas y marcar "Fail if no thumbnail size": si se marca, exportar un registro cuyo campo de imagen no tenga un tamaño configurado genera un error en lugar de omitirlo silenciosamente. La misma lista se muestra en el formulario del índice.

Los propios tamaños de miniatura son registros con un nombre, una clave y ancho/alto. Cuando un registro se exporta a un índice, el módulo busca los tamaños configurados para el campo de imagen, genera las miniaturas (para campos de imagen única y para campos de imágenes múltiples) y las almacena como miniaturas indexadas vinculadas al adjunto original. El formulario del adjunto muestra las miniaturas indexadas relacionadas.

Una regla impide crear dos reglas de tamaño idénticas para el mismo backend, modelo y campo. Solo los gestores del motor de búsqueda pueden crear o modificar tamaños y reglas; los demás usuarios pueden leerlos.

Modelos y campos (7)
  • se.index · amplía un modelo existenteimage_field_thumbnail_size_ids (Thumbnail Sizes)
  • se.backend · amplía un modelo existentefails_if_no_thumbail_size (Fail if no thumbnail size), image_field_thumbnail_size_ids (Thumbnail Sizes)
  • se.thumbnail · modelo nuevo
  • ir.attachment · amplía un modelo existentese_thumbnail_ids (Indexed Thumbnails)
  • se.thumbnail.size · modelo nuevokey, name, size_x, size_y
  • se.indexable.record · amplía un modelo existente
  • se.image.field.thumbnail.size · modelo nuevomodel (Model name), field_id (Images field), model_id (Model), size_ids, backend_id (Search Engine Backend), field_name (Images field name), display_name, field_id_domain (Domain to select images field)

Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 2 confirmadas, 7 sin información de 9 versiones.

Fuentes · Odoo 18.0

Confirmado el 2026-11-03 en la rama 18.0 de OCA/search-engine.

terminal Instalación y uso

Documentación de OCA · Odoo 18.0

Si quieres forzar el formato de la miniatura generada, defines un parámetro de configuración en Odoo con la clave fs_image_thumbnail.resize_format y el valor PNG o JPEG o GIF o ICO. De lo contrario, el formato de la miniatura generada será el mismo que el formato de la imagen original.

Tal como se especifica, este módulo no añadirá ninguna funcionalidad nueva por sí mismo una vez instalado. Como desarrollador, puedes depender de este módulo para beneficiarte de un conjunto de métodos especializados que se pueden utilizar para obtener y generar miniaturas a partir de una imagen que quieras indexar.

Entre bastidores, este módulo extiende el modelo se.indexable.recor añadiendo 2 nuevos métodos:

  • _get_or_create_thumbnails_for_multi_images: Este método se utiliza para obtener o crear miniaturas para un conjunto de imágenes.
  • _get_or_create_thumbnails_for_image: Este método se utiliza para obtener o crear miniaturas para una sola imagen.

Gracias a estos métodos, puedes generar fácilmente miniaturas para imágenes almacenadas en odoo a través de tres formas diferentes:

  • Un campo relacional que referencia un registro que hereda de fs.image.relation.mixin.
  • Un campo Image de odoo.
  • Un campo FSImage.

Los tamaños de las miniaturas generadas por estos métodos se configuran mediante la creación de un nuevo registro en el modelo se.thumbnail.size. Este modelo te permite definir el tamaño de las miniaturas por backend de motor de búsqueda, modelo y campo. Por ejemplo, puedes definir que quieres generar miniaturas de tamaño 100x100 para todas las imágenes almacenadas en el modelo product.template y el campo image cuando las exportas al backend opensearch_xyz. De esta forma, puedes definir fácilmente diferentes tamaños de miniaturas para diferentes backends de motores de búsqueda, modelos y campos según tus necesidades.

Las miniaturas siempre se recuperan y generan para una imagen y un base_name específico. El nombre base se utiliza como clave para identificar las miniaturas de una imagen relacionada con un uso y también como nombre base para el nombre de archivo de las miniaturas generadas. Por defecto, el base_name se calcula a partir del nombre para mostrar del registro que contiene la imagen para garantizar un buen SEO. Para evitar problemas con caracteres especiales, el base_name se normaliza antes de ser utilizado.

Aquí tienes un ejemplo de cómo utilizar estos métodos:

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}")

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.