Python图片格式转换(超实用)

文章介绍了如何使用Python实现图片目录的遍历,将不同格式的图片分开,并提供图片转换功能,支持jpg转png、png转jpg、webp转jpg和webp转png。

1.获取图片目录并不同格式图片分开

jpgs,pngs,webp  = [],[],[] #定义列表
imgs = os.listdir(path) #获取指定目录下的文件或目录
    for img in imgs: #循环遍历
        if img.endswith('.jpg'): #判断以.jpg结尾文件名
            jpgs.append(img) #文件名添加到列表
        elif img.endswith('.png'): #判断以.png结尾文件名
            pngs.append(img)
        elif img.endswith('.webp'): #判断以.webp结尾文件名
            webp.append(img)
        else:
            pass #不做任何操作

2.图片转换

 for jpg in jpgs:
     img = cv2.imread(path+jpg) #图片路径
     img_name = jpg.split('.jpg')[0] #获取图片名称
     cv2.imwrite(path+img_name+'.png',img) #保存图片
     # os.remove(path+jpg) #删除原图片

3.完成代码

import  cv2
import os
#获取当前目录的文件名列表并遍历按照图片格式分开
def get_imgs(path):
    jpgs,pngs,webp  = [],[],[] #定义列表
	imgs = os.listdir(path) #获取指定目录下的文件或目录
    for img in imgs: #循环遍历
        if img.endswith('.jpg'): #判断以.jpg结尾文件名
            jpgs.append(img) #文件名添加到列表
        elif img.endswith('.png'): #判断以.png结尾文件名
            pngs.append(img)
        elif img.endswith('.webp'): #判断以.webp结尾文件名
            webp.append(img)
        else:
            pass #不做任何操作
    return jpgs,pngs,webp #返回值
#图片转换
def img_transform(option,path):
    if not path.endswith('/'): # 判断传path是否以/结尾
        path = path + '/'
    jpgs,pngs,webp = get_imgs(path) #调用函数获取图片名称
    if option == '1': #jpg转换为png
        for jpg in jpgs:
            img = cv2.imread(path+jpg)
            img_name = jpg.split('.jpg')[0]
            cv2.imwrite(path+img_name+'.png',img)
            # os.remove(path+jpg) #删除原图片
    elif option == '2':  #png转换为jpg
        for png in pngs:
            img = cv2.imread(path+png)
            img_name = png.split('.png')[0]
            cv2.imwrite(path+img_name+'.jpg',img)
    elif option == '3': #webp转换为jpg
        for wp in webp:
            img = cv2.imread(path+wp)
            img_name = wp.split('.webp')[0]
            cv2.imwrite(path+img_name+'.jpg',img)
    elif option == '4': # webp转换为png
        for wp in webp:
            img = cv2.imread(path + wp)
            img_name = wp.split('.webp')[0]
            cv2.imwrite(path + img_name + '.png', img)
    else:
        print('请输入正确数字!!')

def main():
    items = ['1-(jpg转换为png)', '2-(png转换为jpg)', '3-(webp转换为jpg)', '4-(webp转换为png)', '提示(除1-4数字外,任意键均不操作)']  #定义选项列表
    print(f"{items[0]:<20} {items[1]:<20} {items[2]:<20} {items[3]:<20} {items[4]:<20}")
    print('*-*' * 42)
    option = input('请选择导出数据的选项(例如:1或2..):')
    path = input('请填写图片路径(例如:E:\photo\):')
    img_transform(option,path) #调用函数处理图片转换
    print('*-*' * 18 + '图片转换完毕!' + '*-*' * 19 )

if __name__ == '__main__':
    main()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MtoSlc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值