fia*_*cre 6 python macos jpeg python-imaging-library
这有效:
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()
Run Code Online (Sandbox Code Playgroud)
但是,如果我将参数更改为:
def create_image_file(name='test.jpg', ext='jpg', ...)
Run Code Online (Sandbox Code Playgroud)
提出了一个例外:
File "/Users/myuser/project/venv/lib/python2.7/site-packages/PIL/Image.py", line 1681, in save
save_handler = SAVE[format.upper()]
KeyError: 'JPG'
Run Code Online (Sandbox Code Playgroud)
我需要使用具有.jpg扩展名的用户上传图像.这是Mac特有的问题吗?我可以做些什么来将格式数据添加到Image lib吗?
Sel*_*cuk 14
的第二个参数save是不能扩展,它是在指定的格式参数图像文件格式和格式说明JPEG文件是JPEG,不JPG.
如果要PIL确定要保存的格式,可以忽略第二个参数,例如:
image.save(name)
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,您只能使用文件名而不能使用文件对象.
format - 可选格式覆盖.如果省略,则使用的格式由文件扩展名确定.如果使用文件对象而不是文件名,则应始终使用此参数.
或者,您可以检查扩展名并手动确定格式.例如:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8120 次 |
| 最近记录: |