存储图像到文件系统存储的域
项目描述
此插件定义了一个新的字段 FSImage,用于在您的模型中。它是 FSFile 字段的子类,并具有相同的功能。它扩展了 FSFile 字段,添加了特定于图像的属性。在字段定义中,以下额外的属性可用
max_width (int): 图像的最大宽度(以像素为单位)(默认:0,无限制)
max_height (int): 图像的最大高度(以像素为单位)(默认:0,无限制)
verify_resolution (bool): 是否应验证图像分辨率以确保不超过最大图像分辨率(默认:True)。有关最大图像分辨率,请参阅 odoo.tools.image.ImageProcess(默认:50e6)。
在字段的值方面,值是 odoo.addons.fs_file.fields.FSFileValue 子类的实例。它扩展了该类,允许您为图像管理 alt_text。alt_text 是在图像无法显示时将显示的文本。
目录
用法
这种新的字段类型可以像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>
在上述示例中,如果图片大小超过1920x1920px,将会被调整到这个大小。表单视图中所使用的组件也会允许用户为图片设置‘alt’文本。
以下是一个高级且实用的示例:
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>
在上述示例中,我们有两个字段,一个用于原始图片,另一个用于缩略图。由于缩略图被定义为相关存储字段,它会自动从原始图片生成,调整到指定大小并在数据库中存储。缩略图随后被用作表单视图中原图片的预览图。这种方法的优点是原始图片不会在表单视图中加载,而是使用缩略图,其大小更小,加载更快。‘缩放’选项允许用户在点击缩略图时在弹出窗口中查看原始图片。
为了方便,‘fs_image’模块还提供了一个名为‘FSImageMixin’的混合类,可以将其用于向模型添加‘image’和‘image_medium’字段。它只将中等缩略图定义为128x128px的图片,因为它是最常见的使用案例。在使用模型中的图片字段时,建议使用此混合类以确保始终定义‘image_medium’字段。一个好的做法是将image_medium字段用作表单视图中图片字段的预览图,以避免在表单视图中加载大图片并消耗过多带宽。
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>
变更日志
16.0.1.0.3 (2024-02-23)
错误修复
(#305)
16.0.1.0.2 (2023-12-02)
错误修复
修复上传图片时视图崩溃的问题
rawCacheKey由基类适当地管理,并反映了记录的最后更新日期时间(write_date)。由于它没有设置器,尝试使值无效会导致视图崩溃。尽管如此,值会在保存记录时自动更新。(#305)
16.0.1.0.1 (2023-12-02)
错误修复
避免在读取图片字段时生成SQL更新查询。
修复在读取字段时初始化图片字段值对象时出现的错误。在此修复之前,每当值对象初始化时都会在构造函数中执行一个附件的赋值。这个赋值会将字段标记为已更改,并在请求结束时生成一个SQL更新查询。FSImageValue类的构造函数中的alt文本只能在类未使用附件初始化时使用。我们现在检查是否同时提供了附件和alt文本,并在这种情况发生时抛出异常。(#307)
问题跟踪器
错误在GitHub Issues上追踪。如果遇到问题,请检查是否已报告您的问题。如果您首先发现,请提供详细且受欢迎的反馈以帮助我们解决问题。
请不要直接联系贡献者以获取支持或帮助解决技术问题。
致谢
贡献者
Laurent Mignon <laurent.mignon@acsone.eu>
Nguyen Minh Chien <chien@trobz.com>
维护者
此模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。
当前维护者
此模块是GitHub上OCA/storage项目的一部分。
欢迎您贡献。要了解如何贡献,请访问https://odoo-community.org/page/Contribute。
项目详情
odoo_addon_fs_image-17.0.1.0.1.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9218b5f725a963dd4be0bf9a169578988ab54186eb7b8f2e40528b0de9e79736 |
|
MD5 | f01db754eed55200f3fcb63dee61ac4c |
|
BLAKE2b-256 | 5f338b525a459576418f57894795456e01073b9c36b471e4330b0369b3fcbbf1 |