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)
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。