Este addon define un nuevo campo FSImage para usar en tus modelos. Es una subclase del campo FSFile y viene con las mismas características. Extiende el campo FSFile con propiedades específicas dedicadas a las imágenes. En la definición del campo, están disponibles las siguientes propiedades adicionales:
- max_width (int): ancho máximo de la imagen en píxeles (por defecto: 0, sin límite)
- max_height (int): altura máxima de la imagen en píxeles (por defecto: 0, sin límite)
- verify_resolution (bool): si se debe verificar la resolución de la imagen para asegurar que no supere la resolución máxima de imagen (por defecto: True). Consulta odoo.tools.image.ImageProcess para la resolución máxima de imagen (por defecto: 50e6).
En el lado del valor del campo, el valor es una instancia de una subclase de odoo.addons.fs_file.fields.FSFileValue. Extiende la clase para permitirte gestionar un alt_text para la imagen. El alt_text es un texto que se mostrará cuando la imagen no pueda mostrarse.
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.0Añade un nuevo tipo de campo de imagen que almacena las imágenes en un almacenamiento del sistema de archivos en lugar de en la base de datos, con redimensionado automático y un texto alternativo editable para la accesibilidad.
Este módulo proporciona a los desarrolladores un nuevo tipo de campo de imagen que mantiene los archivos de imagen en un almacenamiento del sistema de archivos en lugar de dentro de la base de datos de Odoo. Las imágenes se pueden subir, reemplazar, descargar y borrar directamente desde la vista de formulario con los botones habituales del widget de imagen.
- Las imágenes se redimensionan automáticamente a un ancho y alto máximos al guardarse, manteniendo la relación de aspecto, y una comprobación de resolución opcional evita que se procesen imágenes muy grandes.
- Se puede generar automáticamente una versión más pequeña relacionada de la imagen (por ejemplo, una miniatura de 128x128).
- Cada imagen puede llevar un texto alternativo, editable mediante un pequeño diálogo que se abre desde el widget de imagen; este texto se almacena en el adjunto y está pensado para las imágenes mostradas en un sitio web.
- Intentar establecer un texto alternativo en una imagen vacía genera un error.
El módulo añade un campo alt_text en ir.attachment y proporciona un modelo abstracto fs.image.mixin con campos image y image_medium que otros modelos pueden reutilizar. Depende del módulo de campo de archivo del sistema de archivos y del cliente web.
Depende de
Lo necesitan otros módulos
Modelos y campos (2)
- ir.attachment · amplía un modelo existentealt_text (Alternative Text)
- fs.image.mixin · modelo nuevo
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-03Estado de confirmación: 3 confirmadas, 6 sin información de 9 versiones.
Fuentes · Odoo 18.0
Confirmado el 2026-11-03 en la rama 18.0 de OCA/storage.
terminal Instalación y uso
Documentación de OCA · Odoo 18.0Este nuevo tipo de campo se puede utilizar de la misma forma que el tipo de campo 'Image' de odoo.
from odoo import models
from odoo.addons.fs_image.fields import FSImage
class MyModel(models.Model):
_name = 'my.model'
image = FSImage('Image', max_width=1920, max_height=1920)<record id="my_model_form" model="ir.ui.view">
<field name="name">my.model.form</field>
<field name="model">my.model</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="image" class="oe_avatar"/>
</group>
</sheet>
</form>
</field>
</record>En el ejemplo anterior, la imagen se redimensionará a 1920x1920px si es más grande que eso. El widget utilizado en la vista de formulario también permitirá al usuario establecer un texto 'alt' para la imagen.
Un ejemplo más avanzado y útil es el siguiente:
from odoo import models
from odoo.addons.fs_image.fields import FSImage
class MyModel(models.Model):
_name = 'my.model'
image_1920 = FSImage('Image', max_width=1920, max_height=1920)
image_128 = FSImage('Image', max_width=128, max_height=128, related='image_1920', store=True)<record id="my_model_form" model="ir.ui.view">
<field name="name">my.model.form</field>
<field name="model">my.model</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field
name="image_1920"
class="oe_avatar"
options="{'preview_image': 'image_128', 'zoom': true}"
/>
</group>
</sheet>
</form>
</field>
</record>En el ejemplo anterior tenemos dos campos, uno para la imagen original y otro para una miniatura. Como la miniatura se define como un campo relacionado almacenado, se genera automáticamente a partir de la imagen original, se redimensiona al tamaño indicado y se almacena en la base de datos. La miniatura se utiliza entonces como imagen de vista previa de la imagen original en la vista de formulario. La principal ventaja de este enfoque es que la imagen original no se carga en la vista de formulario y se utiliza la miniatura en su lugar, que es mucho más pequeña en tamaño y más rápida de cargar. La opción 'zoom' permite al usuario ver la imagen original en una ventana emergente al hacer clic en la miniatura.
Por comodidad, el módulo 'fs_image' también proporciona una clase mixin 'FSImageMixin' que se puede utilizar para añadir los campos 'image' e 'image_medium' a un modelo. Solo define la miniatura medium como una imagen de 128x128px, ya que es el caso de uso más común. Cuando se utiliza un campo de imagen en un modelo, se recomienda utilizar esta clase mixin para asegurar que el campo 'image_medium' esté siempre definido. Una buena práctica es utilizar el campo image_medium como imagen de vista previa del campo image en la vista de formulario para evitar sobrecargar la vista de formulario con una imagen grande y consumir demasiado ancho de banda.
from odoo import models
class MyModel(models.Model):
_name = 'my.model'
_inherit = ['fs_image.mixin']<record id="my_model_form" model="ir.ui.view">
<field name="name">my.model.form</field>
<field name="model">my.model</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field
name="image"
class="oe_avatar"
options="{'preview_image': 'image_medium', 'zoom': true}"
/>
</group>
</sheet>
</form>
</field>
</record>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, Configuración.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
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.