zjg121 发表于 2024-3-28 15:51

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

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) + ".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:/图片/")

'''

zjg121 发表于 2024-3-28 17:39

本帖最后由 zjg121 于 2024-3-28 18:27 编辑

merlin9527 发表于 2024-3-28 16:25
能把白色区域改成透明最好
研究一下,应该可以的。更新时再加上这个功能。
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 == 255 and item == 255 and item == 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

不错,有成品没

abcttud 发表于 2024-3-28 16:55

能把多张图片合成视频的有吗

zjg121 发表于 2024-3-28 17:40

abcttud 发表于 2024-3-28 16:55
能把多张图片合成视频的有吗

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

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代码,连基本的语法都看不太懂了……这个库我不了解,但你这个好像判断了两次文件类型吧

两个函数:一个是对单文件的,一个是对文件夹的。

fy9631 发表于 2024-3-28 20:06

厉害了!{:1_921:}
页: [1] 2
查看完整版本: 把一个图片或一个文件夹中的图片转为png。适用于(jpg、jpeg、gif、webp)四种格式