跳转到主要内容

生成和存储图像缩略图

项目描述

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

此模块扩展了fs_image插件以支持生成和存储图像缩略图。这是一个技术模块,不供最终用户安装。它只提供用于其他模块的混合模型和存储缩略图的模式。

目录

用例/上下文

在某些特定情况下,您可能需要在Odoo中生成和存储图像缩略图。例如,当您想要为网站或移动应用程序提供特定尺寸的图像时。

此模块提供了一种生成图像缩略图并将其存储在特定文件系统存储中的通用方法。实际上,您可能需要将缩略图存储在不同于原始图像的存储中(例如:将缩略图存储在CDN上),以确保当外部应用程序请求时,缩略图可以快速提供服务,并避免暴露原始图像存储。

此模块使用fs_image模块将缩略图存储在文件系统存储中。

shopinvader_product_image 插件使用此模块生成和存储产品及类别的缩略图,以便网站可以访问。

用法

此插件提供了一种便捷的方式获取和创建(如果不存在)图像缩略图。所有逻辑都由抽象模型 fs.image.thumbnail.mixin 实现。主要方法为 get_or_create_thumbnails,它接受一个 FSImageValue 实例、一个缩略图尺寸列表和一个基本名称。

当调用此方法时,它将检查给定尺寸和基本名称的缩略图是否存在。如果不存在,则将其创建。

此插件提供的 fs.thumbnail 模型是抽象模型 fs.image.thumbnail.mixin 的具体实现。在抽象模型中实现所有逻辑的动机是允许开发者创建自己的缩略图模型。如果您想将缩略图存储在不同的存储中,这可能会很有用,因为您可以在 fs.storage 表单视图中指定要使用的存储。

创建/检索缩略图就像这样简单

from odoo.addons.fs_image.fields import FSImageValue

# create an attachment with a image file
attachment = self.env['ir.attachment'].create({
    'name': 'test',
    'datas': base64.b64encode(open('test.png', 'rb').read()),
    'datas_fname': 'test.png',
})

# create a FSImageValue instance for the attachment
image_value = FSImageValue(attachment)

# get or create the thumbnails
thumbnails = self.env['fs.thumbnail'].get_or_create_thumbnails(
    image_value, [(800,600), (400, 200)], 'my base name')

如果您有一个带有 FSImage 字段的模型,对 get_or_create_thumbnails 的调用将更简单

from odoo import models
from odoo.addons.fs_image.fields import FSImage

class MyModel(models.Model):
    _name = 'my.model'

    image = FSImage('Image')

my_record = cls.env['my.model'].create({
    'image': open('test.png', 'rb'),
})

# get or create the thumbnails
thumbnails = record.image.get_or_create_thumbnails(my_record.image,
    [(800,600), (400, 200)], 'my base name')

变更日志

16.0.1.0.1 (2023-10-04)

错误修复

  • 现在对 fs.image.thumbnail.mixin 类中的 get_or_create_thumbnails 方法的调用返回一个有序字典,其中键是原始图像,值是缩略图图像的记录集。字典的顺序是传递给方法的图像的顺序。这确保了在处理方法的结果时,您可以确信图像的顺序与传递给方法的图像的顺序相同。(#282

错误跟踪器

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

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

致谢

作者

  • ACSONE SA/NV

贡献者

其他致谢

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

维护者

此模块由 OCA 维护。

Odoo Community Association

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

当前 维护者

lmignon

此模块是 GitHub 上 OCA/storage 项目的组成部分。

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

项目详情


下载文件

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

源代码发行版

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

构建的分发

由以下机构支持