枕头:无法将 '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
模式。
我正在尝试使用 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
模式。