def new_image_resize_image_medium(base64_source, size=(315, 417), encoding='base64', filetype=None, avoid_if_small=False): return image_resize_image(base64_source, size, encoding, filetype, avoid_if_small)
def get_record_image_path(record, image, size=(128, 128)): """ :param record: instance of model :param image: example: product_id.image :param size: example: (128, 128) :return: path to image or None if no image """ if not image: return None temp_folder = tempfile.mkdtemp() record_image_path = os.path.join(temp_folder, str(record.id) + ".jpg") try: record_image = IMG.image_resize_image(image, size) record_image = base64.b64decode(record_image) with open(record_image_path, "wb") as f: f.write(record_image) return record_image_path except Exception as e: logging.error( "Error when processing the image for" "record: %s: %s", record, str(e), ) raise e return False
def download_employees(self, mid): self = self.browse(mid) domain = [] if (bool(self.dep_do) and bool(self.dep)): domain = expression.AND( [domain, [('department_id', self.dep_do, self.dep.ids)]]) if (bool(self.emp_do) and bool(self.emp)): domain = expression.AND( [domain, [('id', self.emp_do, self.emp.ids)]]) employees = self.sudo().env['hr.employee'].search(domain) return employees.mapped(lambda x: ( x.id, x.name, x.barcode, image.image_resize_image(x.image), x.write_date, ))
def resize_image(self, data, name, default="(128,128)"): if data: size = self.env['ir.config_parameter'].sudo().get_param( name, default=default) size = eval(size) path_assets = ASSETS_PATH img_path = path_assets.replace("/assets", data.url) img = Image.open(img_path) data_img = open(path_assets.replace("/assets", data.url), "rb").read() if not size == img.size: data_img = image.image_resize_image(base64.b64encode(data_img), size=size) data_img = base64.b64decode(data_img) # rewrite file name dot_files = [".png", ".jpg", ".jpeg", ".gif"] data_write = { "name": data.name, "url": data.url, "local_url": data.url } new_path = img_path for d_f in dot_files: if data.name.find(d_f) >= 0: str_replace = "_%s%s" % ("x".join( [str(x) for x in size]), d_f) data_write["name"] = data_write["name"].replace( d_f, str_replace) data_write["url"] = data_write["url"].replace( d_f, str_replace) data_write["local_url"] = data_write[ "local_url"].replace(d_f, str_replace) new_path = new_path.replace(d_f, str_replace) break # write image with open(new_path, "wb") as f: f.write(data_img) if not data.is_copy: os.remove(img_path) data.write(data_write) return True
from odoo.tools import image, base64 from odoo.modules import get_module_resource image_path = get_module_resource('hr', 'static/src/img', 'default_image.png') img = image.image_resize_image_big( base64.b64encode(open(image_path, 'rb').read())) resized_image = image.image_resize_image(base64_source=img, size=(500, 500)) ''' @api.depends('partner_id', 'partner_id.image') def _compute_logo_web(self): for company in self: company.logo_web = tools.image_resize_image(company.partner_id.image, (180, None)) ''' image.image_resize_images(vals={'some_fields': 1234}, sizes={'image': (1024, None)}) ''' Update ``vals`` with image fields resized as expected. @api.model_create_multi def create(self, vals_list): for vals in vals_list: tools.image_resize_images(vals) return super(FleetVehicleModelBrand, self).create(vals_list) ''' image.image_resize_and_sharpen(image=img, size=(500, 500)) image.image_get_resized_images(base64_source=img) '''
def post(self, **kwargs): record_model = http.request.env['ws_wharf_parts_record'] img_model = http.request.env['ws_wharf_parts_img'] wharf_model = http.request.env['ws_wharf_parts_wharf'] ship_model = http.request.env['ws_wharf_parts_ship'] car_model = http.request.env['ws_wharf_parts_car'] bulk_model = http.request.env['ws_wharf_parts_bulk'] place_model = http.request.env['ws_wharf_parts_place'] to_where_model = http.request.env['ws_wharf_parts_to_where'] time_now = datetime.datetime.now() number = int(time.time() * 1000000) local = kwargs.get('local') wharf = kwargs.get('wharf') ship = kwargs.get('ship') car = kwargs.get('car') bulk = kwargs.get('bulk') place = kwargs.get('place') to_where = kwargs.get('to_where') wharf = wharf_model.sudo().search([('wharf_name', '=', wharf)]) ship = ship_model.sudo().search([('ship_name', '=', ship)]) car = car_model.sudo().search([('car_name', '=', car)]) bulk = bulk_model.sudo().search([('bulk_name', '=', bulk)]) place = place_model.sudo().search([('place_name', '=', place)]) to_where = to_where_model.sudo().search([('to_where_name', '=', to_where)]) # io账号, 密码, 数据库, UID uid = request.session["uid"] description = kwargs.get('description') vals = { 'number': number, 'time': time_now, 'local': local, 'wharf': wharf.id, 'ship': ship.id, 'car': car.id, 'bulk': bulk.id, 'place': place.id, 'to_where': to_where.id, 'uid': uid, 'description': description } # 通过模型方法insert一条记录 record_model.sudo().create(vals=vals) record = record_model.sudo().search([('number', '=', number)]) for item in record: img_id = item.id i = '0' end_number = 'A' for item in range(9): img = kwargs.get('img' + i) if img == 'undefined': break else: # 压缩图片 small_img = image.image_resize_image(img, size=(128, 128), encoding='base64', filetype=None, avoid_if_small=False) # print str(number)+'A' # print "small size:" # print image.image_resize_image(img, size=(270, 270), encoding='base64', # filetype=None,avoid_if_small=False) img_model.sudo().create({ 'img_id': img_id, 'img': img, 'img_name': str(number) + end_number, 'small_img': small_img }) i = chr(ord(i) + 1) end_number = chr(ord(end_number) + 1) return http.Response('您已登记', 200)