【png2jpg】【png转jpg并压缩】

背景

  • png2jpg:读取 png 格式的图片,转成 PIL 读取的格式,最终通过 PIL 存储成 jpg 格式。
  • png2jpg并压缩(目的是减小占用空间):读取 png 格式,通过设置图像质量和 dpi 对图像进行压缩,直至符合要求。

png2jpg

import cv2, os
from PIL import Image

# img_folder_path = './3_6_gbkhdjb'
img_folder_path = './3_7_gwyndkhdjb'

img_folder_path_save = img_folder_path + '_jpg'
os.makedirs(img_folder_path_save, exist_ok=True)

for img_name in os.listdir(img_folder_path):
    if img_name.endswith('.png'):
        img_path = os.path.join(img_folder_path, img_name)
        print(img_path)

        # 打开 PNG 图片
        img_cv = cv2.imread(img_path)
        img_rgb = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB)
        img_pil = Image.fromarray(img_rgb)
        img_path_save = os.path.join(img_folder_path_save, img_name.split('.')[0] + '.jpg')
        img_pil.save(img_path_save, dpi=(300, 300))

png2jpg 并压缩

import os
from PIL import Image

# 读取图片
image = Image.open('./image/1.png')
img_path_save = './image/result.jpg'

# 如果图片是 RGBA 模式,转换为 RGB 模式
if image.mode == 'RGBA':
    image = image.convert('RGB')

# 设定输出图片的质量和 DPI
quality = 97  # 图片质量    470 KB
dpi = (500, 500)  # DPI设置为300x300

image.save(img_path_save, format='JPEG', quality=quality, dpi=dpi)
file_size_kb = os.path.getsize(img_path_save) / 1024

# # 循环尝试降低质量,直到文件大小符合要求
# while True:
#     # 保存图片并指定DPI
#     image.save(img_path_save, format='JPEG', quality=quality, dpi=dpi)
#
#     # 检查文件大小
#     file_size_kb = os.path.getsize(img_path_save) / 1024
#     if file_size_kb <= 500 or quality <= 10:  # 假如质量已降到10仍不符合条件,则停止
#         break
#
#     # 如果文件大小仍然超过500kb,降低质量
#     quality -= 5
print(f'最终文件大小: {file_size_kb:.2f} KB, 质量设定: {quality}, DPI: {dpi}')
运行结果

在这里插入图片描述

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值