吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1531|回复: 10
收起左侧

[学习记录] 小案例:利用python转换图片格式

  [复制链接]
zhzhx 发表于 2022-11-17 14:21
前言

常见的图像任务通常需要把照片统一成相同的格式,所以此文章正是为了统一格式而生,常见的主要有cv2和PIL.Image的相关操作,照片格式是一串数字加上后缀名

工具一:cv2

[Python] 纯文本查看 复制代码
pip install opencv-python


之后就可以

[Python] 纯文本查看 复制代码
import cv2


1.1 导包

[Python] 纯文本查看 复制代码
import os
 
import cv2
 
import sys
 
import numpy as np


1.2 路径设置

[Python] 纯文本查看 复制代码
path = r"C:\\Users\\86775\\test_change\\"
path2 = r"C:\\Users\\86775\\test_change2\\"


1.3 改格式重新传


1.3.1 用os.path.splitext()来判断

[Python] 纯文本查看 复制代码
images = os.listdir(path)
for i in os.listdir(path):
    print(os.path.splitext(i))  # ('34474006827920603', '.png')
    if os.path.splitext(i)[1] == ".jpeg":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".jpeg", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif os.path.splitext(i)[1] == ".png":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".png", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif os.path.splitext(i)[1] == ".JPG":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".JPG", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif os.path.splitext(i)[1] == ".PNG":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".PNG", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif os.path.splitext(i)[1] == ".jpg":
        img = cv2.imread(path + i)
        # print(img)
        cv2.imwrite(path2 + i, img)


1.3.2 用split()来判断

[Python] 纯文本查看 复制代码
images = os.listdir(path)
for i in os.listdir(path):
    print(i.split("."))
    if i.split(".")[1] == "jpeg":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".jpeg", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif i.split(".")[1] == "png":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".png", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif i.split(".")[1] == "JPG":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".JPG", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif i.split(".")[1] == "PNG":
        img = cv2.imread(path + i)
        # print(img)
        new_imagename = i.replace(".PNG", ".jpg")
        cv2.imwrite(path2 + new_imagename, img)
 
    elif i.split(".")[1] == "jpg":
        img = cv2.imread(path + i)
        # print(img)
        cv2.imwrite(path2 + i, img)


1.4 查看结果

QQ截图20221117142025.png

免费评分

参与人数 6吾爱币 +4 热心值 +6 收起 理由
bto575758 + 1 + 1 我很赞同!
1MajorTom1 + 1 热心回复!
1024X + 1 + 1 热心回复!
Dreamkoi + 1 + 1 谢谢@Thanks!
zhaoqingdz + 1 谢谢@Thanks!
461735945 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wyangdh 发表于 2022-11-17 14:40
感谢楼主分享经验,学习了。
wkdxz 发表于 2022-11-17 15:19
IF写得有点多,放到列表里面可能好些

[Python] 纯文本查看 复制代码
images = os.listdir(path)
for i in os.listdir(path):
    print(os.path.splitext(i))  # ('34474006827920603', '.png')

    houzhui = os.path.splitext(i)[1]
    if houzhui.lower() in ['.jpg', '.jpeg', '.png', '.gif', '.webp']:
        img = cv2.imread(os.path.join(path, i))
        if houzhui == ".jpg":
            cv2.imwrite(os.path.join(path2, i), img)
        else:
            new_imagename = i.replace(houzhui, ".jpg")
            cv2.imwrite(os.path.join(path2, new_imagename), img)
ehcapa 发表于 2022-11-17 16:11
yks1985 发表于 2022-11-17 16:15
学到了。。。感谢分享
sw7057 发表于 2022-11-17 16:21
感谢楼主分享经验,学习了。
laoz 发表于 2022-11-17 16:36
厉害,学习了
yiliber 发表于 2022-11-17 16:46
感谢楼主分享经验,学习了。
Paulwalkera 发表于 2022-11-17 16:46
又学到了一个技能
ykx184409780 发表于 2022-11-17 17:34
wkdxz 发表于 2022-11-17 15:19
IF写得有点多,放到列表里面可能好些

[mw_shl_code=python,true]images = os.listdir(path)

学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表