conversión de formato/compresión de imagen de python

prefacio

Anoche, finalmente cambié el fondo rojo por uno azul. Estaba pensando en enviarlo felizmente, pero
descubrí que no se podían enviar 201KB... La universidad requiere (60KB~200KB).



Comprimir imagen

# 代码参考自 https://blog.csdn.net/weixin_34910922/article/details/117537384
import cv2


def compress_pic(origin_img_fp, save_img_fp, compression):

    # IMWRITE_JPEG_QUALITY会比IMWRITE_PNG_COMPRESSION压缩比率低一些
    quality = cv2.IMWRITE_JPEG_QUALITY
    assert 0 <= compression <= 100, 'please make sure 0 <= compression <= 100'
    if origin_img_fp.split('.')[-1] == 'png':
        # 越小照片越大
        quality = cv2.IMWRITE_PNG_COMPRESSION
        assert 0 <= compression <= 10, 'please make sure 0 <= compression <= 10'
    
    img = cv2.imread(origin_img_fp)
    cv2.imwrite(save_img_fp.format(compression), img, [quality, compression])
    print('压缩成功', save_img_fp.format(compression))


if __name__ == '__main__':
    origin_img_path = 'pic/my_640_480.png'
    save_img_path = 'pic/my_640_480_compression_{}.png'
    compress_pic(origin_img_path, save_img_path, 8)

En formato png, se puede encontrar que cuanto menor sea el parámetro de compresión establecido, mayor será el tamaño de la imagen.



Conversión de formato de imagen

Subí y eché un vistazo, la universidad requiere el formato jpg, que es realmente puro y puro...
Usé paint para guardarlo como una imagen jpg, pero el resultado fue demasiado pequeño, solo 35 KB,
usemos Python para escribe un png a jpg.
El valor predeterminado de calidad es 75, pero la relación de compresión es demasiado grande. Así que subí un poco la calidad.

from PIL import Image


im = Image.open('pic/my_640_480.png')
im = im.convert('RGB')
im.save('pic/my_640_480.jpg', quality=100)

Finalmente terminé de transferir 86KB.

Supongo que te gusta

Origin blog.csdn.net/weixin_43850253/article/details/126383253
Recomendado
Clasificación