将文件夹中的PNG图像转换为JPG格式 - Python

3

有人能向我展示如何将本地文件夹中的所有png图像转换为jpg图像吗?我已经尝试使用以下代码:

path1 = r'C:\Users\david.han\Desktop\COPY_images_files' 

path2 = r'C:\Users\david.han\Desktop\JPG converter'

files_to_convert = (f for f in os.listdir(path1) if f.endswith(".png"))
for filename in files_to_convert:
    im = Image.open(os.path.join(path1, filename))
    root, _ = os.path.splitext(filename)
    jpg_file = os.path.join(path2, f'{root}.jpg')
    im.save(jpg_file)

我一直收到这个错误信息 "OSError: cannot write mode P as JPEG"


这个回答解决了你的问题吗?在操作JPG图像时出现“无法将模式P写入JPEG” - Kaia
这看起来像是一个类似的错误;我猜测PNG文件处于一种奇怪的模式下(例如,PNG可以有一个alpha通道,而JPG则没有;我不知道“P”模式的具体情况,但我猜测它可能是这样或类似的问题)。 - Kaia
1
听起来差不多正确,我会更深入地研究这个链接,谢谢。 - David Han
2个回答

0

对David的代码进行更正:

from PIL import Image 
import os 

path = r'enter_path_to_images'

for file in os.listdir(path): 
    if not file.endswith(".jpg"): 
        img = Image.open("{path}/{file}")
        file_name, file_ext = os.path.splitext(file)
        img.save('/png/{}.png'.format(file_name))

在这种情况下,我们还需要添加正确的路径以避免出现任何错误。

0

我决定保留JPG格式,但如果有人想知道如何将PNG转换为JPG格式

enter code here


from PIL import Image 
import os 

path = r'C:\Users\david.han\Desktop\COPY_images_files'

for file in os.listdir(path): 
    if file.endswith(".jpg"): 
        img = Image.open(file)
        file_name, file_ext = os.path.splitext(file)
        img.save('/png/{}.png'.format(file_name))

在你的代码中,你试图将 .jpg 文件更改为你的 if 语句应该返回 true。因此,你应该放置 **if not file.endswith(".jpg")**。 - Nijat Mursali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接