Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
4945 Lượt xem

Hi all.,

 can anyone tell me how can I compress (reducing image size)binary data before saving it into the postgres. Help me out plzz.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi,

Here's a simple example of how you can integrate image compression with a button click action in an Odoo model:


from odoo import models, fields, api

from PIL import Image

import io

import base64


class MyModel(models.Model):

    _name = 'my.model'


    name = fields.Char(string="Name")

    image = fields.Binary(string="Image")


    @api.multi

    def compress_image(self):

        for record in self:

            try:

                img = Image.open(io.BytesIO(base64.b64decode(record.image)))

                output_stream = io.BytesIO()


                # Compress the image with the specified quality (adjust as needed)

                img.save(output_stream, format='JPEG', quality=85)


                # Update the image field with the compressed image

                record.image = base64.b64encode(output_stream.getvalue())

                output_stream.close()


                print("Image compression successful!")

            except Exception as e:

                print(f"An error occurred: {e}")


Make sure to adjust the code according to your specific requirements and the structure of your Odoo module. Additionally, handle error cases and edge scenarios appropriately.


Hope it helps

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 9 23
7572
2
thg 3 23
46619
2
thg 12 23
57583
0
thg 3 22
2290
0
thg 1 22
2821