枕头:无法将 'P' 转换为 'RGB'

Pillow: Cannot Convert 'P' to 'RGB'

我正在尝试使用 Pillow 将文件夹中的所有图像文件转换为 jpg。

我是枕头的新手,所以我不是 100% 掌握了这些概念。

以下是我正在使用的函数:

def convert_jpg(file, folder = 'flag_images/', delete = False):
    filepath = folder + file
    print(file)
    img = Image.open(filepath, mode = 'r')
    if delete:
        img.save(folder + 'backup/' + file)
        os.remove(filepath)
    if img.mode != 'RGB':
        img.convert('RBG')
    filepath = filepath[0:-3] + 'jpg'
    img.save(filepath)

def convert_all(folder = 'flag_images/'):
    for filename in os.listdir(os.path.abspath(os.getcwd()) + '/flag_images'):
        if filename[-3:] != 'jpg':
            convert_jpg(file = filename, folder = folder, delete = True)

当 运行 convert_all 时,当我访问模式为 'P' 的文件时出现以下错误:

ValueError                              Traceback (most recent call last)
~/anaconda3/lib/python3.8/site-packages/PIL/Image.py in convert(self, mode, matrix, dither, palette, colors)
   1025         try:
-> 1026             im = self.im.convert(mode, dither)
   1027         except ValueError:

ValueError: conversion not supported

如何将模式成功转换为 RGB,以便保存为 jpg?

您有错字和用法错误。你需要改变这个:

img.convert('RBG')

对此:

img = img.convert('RGB')

也就是说,根本没有必要,因为 JPEG 不一定是 P 模式。