美文网首页
Python Pillow 等比缩放

Python Pillow 等比缩放

作者: 霡霂976447044 | 来源:发表于2020-11-26 17:14 被阅读0次
    import base64
    import re
    from io import BytesIO
    
    from PIL import Image
    class ImageScaleTool(object):
        @classmethod
        def base64_to_image(cls, base64_str) -> Image:
            base64_data = re.sub('^data:image/.+;base64,', '', base64_str)
            byte_data = base64.b64decode(base64_data)
            image_data = BytesIO(byte_data)
            img = Image.open(image_data)
            return img
    
        @classmethod
        def image_to_base64(cls, image: Image, img_format='png'):
            container = BytesIO()
            image.save(container, format(img_format))
            data = base64.b64encode(container.getvalue()).decode()
            return f'data:image/{img_format};base64,' + data
    
        @classmethod
        def scale_image(cls, image: Image, min_width, min_height) -> Image:
            w, h = image.size
            if w <= min_width and h <= min_height:
                return image
            if (1.0 * w / min_width) > (1.0 * h / min_height):
                scale = 1.0 * w / min_width
                new_im = image.resize((int(w / scale), int(h / scale)))
    
            else:
                scale = 1.0 * h / min_height
                new_im = image.resize((int(w / scale), int(h / scale)))
            return new_im
    
        @classmethod
        def scale_base64_img(cls, base64_str: str, width: int, height: int) -> str:
            """将base64图片缩放"""
            if width <= 0 or height <= 0:
                return ''
            try:
                image = cls.scale_image(cls.base64_to_image(base64_str), width, height)
                res_str = cls.image_to_base64(image)
            except Exception as e:
                print('scale_base64_img error:', e)
                return ''
            return res_str
    
    

    相关文章

      网友评论

          本文标题:Python Pillow 等比缩放

          本文链接:https://www.haomeiwen.com/subject/oqlziktx.html