python 图片类型转为 jpg

问题

[Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足…]

做法:

把一个文件夹全部的图片(比如 webm, jiff, bpm, avif 等等),都转为 jpg, 然后写入到一个新的文件夹,保存放到桌面。

最常见的一个情况是, 使用 Alt + PrintScreen(PS) 进行截图之后,文件会非常大,需要清除图片中的一些无用信息。

import os
import uuid
from PIL import Image

# 下面这一行,实际上使用了!
# 目的是为了能读取 .avif 类型的图片
import pillow_avif # pip install pillow-avif-plugin
# https://stackoverflow.com/questions/74527775/how-to-convert-avif-to-png-with-python


# 把全部的图片,都转为 jpg, 然后保存到桌面
def convert_image_to_jpg(source="./", output_suffix="jpg"):
    output_dir = r"C:\Users\Administrator\Desktop\temp_images_" + str(uuid.uuid4())
    os.makedirs(output_dir, exist_ok=True)

    # 1. source is a folder
    if os.path.isdir(source):
        print("source is a dir: ", source)

        for img_name in os.listdir(source):
            # 1. 输入文件名
            img_path = os.path.join(source, img_name)
            print("output_name: ", img_path)

            # 2. 输出文件名
            prefix, suffix = os.path.splitext(img_name)
            output_name = os.path.join(output_dir, f"{prefix}.{output_suffix}")
            print("output_name:", output_name)

            # 3. 文件类型转换
            im = Image.open(img_path)
            rgb_im = im.convert('RGB')  # OSError: cannot write mode RGBA as JPEG
            rgb_im.save(output_name)
            print()

    # 2. source is a single image
    else:
        print("source is a file: ", source)
        prefix, suffix = os.path.splitext(source)
        out_name = os.path.join(prefix, output_suffix)
        im = Image.open(source)
        im.save(out_name)
    print("Done")


# 传入文件夹地址, 输出: 默认保存到桌面
p = r"C:\Users\Administrator\Desktop\imgs\"
convert_image_to_jpg(p)

相关推荐

  1. python 图片类型转为 jpg

    2024-07-21 14:16:01       18 阅读
  2. debian 将pdf 转换jpg图片

    2024-07-21 14:16:01       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 14:16:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 14:16:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 14:16:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 14:16:01       55 阅读

热门阅读

  1. 保研英语打卡_Day2 专业类

    2024-07-21 14:16:01       17 阅读
  2. Redis 数据类型

    2024-07-21 14:16:01       15 阅读
  3. 打方块(c++游戏)

    2024-07-21 14:16:01       15 阅读
  4. 【无标题】

    2024-07-21 14:16:01       14 阅读
  5. linux 公平调度关键点记录

    2024-07-21 14:16:01       16 阅读
  6. webSocker消息推送,ajax轮询

    2024-07-21 14:16:01       20 阅读
  7. 基于边缘检测和HSV的图像识别算法

    2024-07-21 14:16:01       15 阅读
  8. 黄金分割率g 和圆周率pi 有什么数学关系?

    2024-07-21 14:16:01       16 阅读
  9. 统计所有可行路径(动态规划)

    2024-07-21 14:16:01       16 阅读
  10. Python之后端Django(五)

    2024-07-21 14:16:01       18 阅读