54 lines
2.3 KiB
Python
Executable File
54 lines
2.3 KiB
Python
Executable File
from odoo import api, fields, models, tools, _
|
|
import base64
|
|
import codecs
|
|
import io
|
|
import logging
|
|
from PIL import Image
|
|
from PIL import ImageEnhance
|
|
from random import randrange
|
|
|
|
Image.preinit()
|
|
Image._initialized = 2
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
from odoo.tools import pycompat
|
|
from odoo.tools import image as toolsImage
|
|
|
|
def image_get_resized_images(base64_source, return_big=False, return_medium=True, return_small=True,
|
|
big_name='image', medium_name='image_medium', small_name='image_small',
|
|
avoid_resize_big=True, avoid_resize_medium=False, avoid_resize_small=False):
|
|
""" Standard tool function that returns a dictionary containing the
|
|
big, medium and small versions of the source image. This function
|
|
is meant to be used for the methods of functional fields for
|
|
models using images.
|
|
|
|
Default parameters are given to be used for the getter of functional
|
|
image fields, for example with res.users or res.partner. It returns
|
|
only image_medium and image_small values, to update those fields.
|
|
|
|
:param base64_source: base64-encoded version of the source
|
|
image; if False, all returnes values will be False
|
|
:param return_{..}: if set, computes and return the related resizing
|
|
of the image
|
|
:param {..}_name: key of the resized image in the return dictionary;
|
|
'image', 'image_medium' and 'image_small' by default.
|
|
:param avoid_resize_[..]: see avoid_if_small parameter
|
|
:return return_dict: dictionary with resized images, depending on
|
|
previous parameters.
|
|
"""
|
|
return_dict = dict()
|
|
if isinstance(base64_source, pycompat.text_type):
|
|
base64_source = base64_source.encode('ascii')
|
|
if return_big:
|
|
return_dict[big_name] = toolsImage.image_resize_image_big(base64_source,size=(1024, 1024), avoid_if_small=avoid_resize_big)
|
|
if return_medium:
|
|
return_dict[medium_name] = toolsImage.image_resize_image_medium(base64_source,size=(600, 600), avoid_if_small=avoid_resize_medium)
|
|
if return_small:
|
|
return_dict[small_name] = toolsImage.image_resize_image_small(base64_source,size=(150, 150), avoid_if_small=avoid_resize_small)
|
|
return return_dict
|
|
|
|
toolsImage.image_get_resized_images = image_get_resized_images
|
|
tools.image_get_resized_images = image_get_resized_images
|
|
|