吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 839|回复: 15
收起左侧

[Python 原创] 把一个图片或一个文件夹中的图片转为png。适用于(jpg、jpeg、gif、webp)四种格式

[复制链接]
zjg121 发表于 2024-3-28 15:51
[Python] 纯文本查看 复制代码
import os

from PIL import Image


def convert_to_png(image_path):
    # 打开图片
    try:
        with Image.open(image_path) as im:
            # 判断是否为支持转换的格式
            if im.format.lower() in ('gif', 'jpeg', 'jpg', 'webp'):
                # 设置输出文件名
                output_path = os.path.splitext(image_path)[0] + ".png"

                # 保存为PNG格式
                im.save(output_path, format="PNG")

                print(f"成功将图片 {image_path} 转换为 PNG 格式并保存为 {output_path}")
            else:
                print(f"不支持转换 {image_path} 的格式 ({im.format}) 至 PNG")

    except IOError:
        print(f"无法打开或转换图片 {image_path},可能不是有效的图片文件或存在其他问题")


# 批量转换目录下的所有支持图片格式为png
def batch_convert_to_png(directory):
    if not os.path.isdir(directory):
        print(f"{directory} 不是有效的目录路径")
        return

    for filename in os.listdir(directory):
        if filename.endswith(('.gif', '.jpg', '.jpeg', '.webp')):
            image_path = os.path.join(directory, filename)
            convert_to_png(image_path)


batch_convert_to_png("D:/图片/")


'''
# 使用示例:
convert_to_png("D:/图片/a.webp")
convert_to_png("input.gif")
convert_to_png("input.jpg")
convert_to_png("input.jpeg")
convert_to_png("input.webp")  # 新增:将 WebP 图片转为 PNG




# 批量转换示例:
batch_convert_to_png("D:/图片/")

'''

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
0120 + 1 + 1 热心回复!
wanfon + 1 + 1 热心回复!

查看全部评分

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

 楼主| zjg121 发表于 2024-3-28 17:39
本帖最后由 zjg121 于 2024-3-28 18:27 编辑
merlin9527 发表于 2024-3-28 16:25
能把白色区域改成透明最好

研究一下,应该可以的。更新时再加上这个功能。
[Python] 纯文本查看 复制代码
from PIL import Image


def convert_white_to_transparent(image_path, touming_path):
    img = Image.open(image_path)
    img = img.convert("RGBA")
    datas = img.getdata()

    new_data = []
    for item in datas:
        if item[0] == 255 and item[1] == 255 and item[2] == 255:
            new_data.append((255, 255, 255, 0))
        else:
            new_data.append(item)

    img.putdata(new_data)
    img.save(touming_path, "PNG")


convert_white_to_transparent("D:/图片/a.png", "D:/图片/透明a.png")
HackYike 发表于 2024-3-28 19:30
好久没看python代码,连基本的语法都看不太懂了……这个库我不了解,但你这个好像判断了两次文件类型吧
余中鱼 发表于 2024-3-28 16:00
merlin9527 发表于 2024-3-28 16:25
能把白色区域改成透明最好
abcttud 发表于 2024-3-28 16:55
能把多张图片合成视频的有吗
 楼主| zjg121 发表于 2024-3-28 17:40
abcttud 发表于 2024-3-28 16:55
能把多张图片合成视频的有吗

好好学习,慢慢进步。只有想不到的,没有做不到的。

免费评分

参与人数 1热心值 +1 收起 理由
abcttud + 1 编好了,麻烦朋友发个过来

查看全部评分

Zaof1 发表于 2024-3-28 18:35
有没有证件照去除背景保留主体的库
aq125930 发表于 2024-3-28 18:47
感谢大佬分享
 楼主| zjg121 发表于 2024-3-28 19:38
HackYike 发表于 2024-3-28 19:30
好久没看python代码,连基本的语法都看不太懂了……这个库我不了解,但你这个好像判断了两次文件类型吧

两个函数:一个是对单文件的,一个是对文件夹的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-28 16:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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