gpt4 book ai didi

Python图像库和KeyError : 'JPG'

转载 作者:太空狗 更新时间:2023-10-30 00:29:19 47 4
gpt4 key购买 nike

这个有效:

from PIL import Image, ImageFont, ImageDraw

def create_image_file(name='test.jpeg', ext='jpeg', size=(500, 500), color=(5, 179, 200)):
file_obj = open(name, 'w')
image = Image.new("RGBA", size=size, color=color)
usr_font = ImageFont.truetype(
"/Users/myuser/ENV/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf", 59)
d_usr = ImageDraw.Draw(image)
d_usr = d_usr.text((105, 280), "Test Image", (0, 0, 0), font=usr_font)
image.save(file_obj, ext)
file_obj.close()

if __name__ == '__main__':
f = create_image_file()

但是如果我将参数更改为:

def create_image_file(name='test.jpg', ext='jpg', ...)

引发异常:

File "/Users/myuser/project/venv/lib/python2.7/site-packages/PIL/Image.py", line 1681, in save
save_handler = SAVE[format.upper()]
KeyError: 'JPG'

我需要处理用户上传的扩展名为 .jpg 的图像。这是 Mac 特有的问题吗?我可以做些什么来将格式数据添加到图像库中吗?

最佳答案

save 的第二个参数不是 扩展名,它是image file formats 中指定的格式参数JPEG 文件的格式说明符是 JPEG,而不是 JPG

如果想让PIL决定保存哪种格式,可以忽略第二个参数,如:

image.save(name)

请注意,在这种情况下,您只能使用文件名而不能使用文件对象。

参见 documentation of .save() method详情:

format – Optional format override. If omitted, the format to use is determined from the filename extension. If a file object was used instead of a filename, this parameter should always be used.

或者,您可以检查扩展名并手动确定格式。例如:

def create_image_file(name='test.jpeg', ext='jpeg', size=(500, 500), color=(5, 179, 200)):
format = 'JPEG' if ext.lower() == 'jpg' else ext.upper()
# ...
image.save(file_obj, format)

关于Python图像库和KeyError : 'JPG' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37048807/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com