有人能帮我解决我的PIL函数的问题吗?
def pad_image(f, width=500, height=None):
if height==None:
height = width
image = Image.new("RGB", (800, 600), (0, 0, 0, 0))
image.paste(StringIO(f), (0,0, 50, 50))
res = StringIO()
image.save(res, 'JPEG')
res.seek(0)
return res
我想把我的图片 f
粘贴到一个500x500的白色画布上,位置要在中间。
这是我目前写的函数,但我遇到了很多麻烦。问题太多了,连画布的高度和宽度部分我都还没开始处理。
Traceback (most recent call last):
File "resizer.py", line 23, in <module>
thumbnail = tools.create_thumbnail(pic,300)
File "../lib/tools.py", line 84, in create_thumbnail
thumbnail_file = pad_image(thumbnail_file.read())
File "../lib/tools.py", line 92, in pad_image
image.paste(f, (0,0, 50, 50))
File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1085, in paste
im = ImageColor.getcolor(im, self.mode)
File "/usr/lib/python2.6/dist-packages/PIL/ImageColor.py", line 101, in getcolor
color = getrgb(color)
File "/usr/lib/python2.6/dist-packages/PIL/ImageColor.py", line 97, in getrgb
raise ValueError("unknown color specifier: %r" % color)
ValueError: unknown color specifier: '\xff\xd8\xff\
1 个回答
1
paste的第一个参数应该是一个Image
对象,而不是StringIO
。
所以你应该使用image.paste(Image.open(StringIO(f)), (0,0, 50, 50))
来替代。
不过在粘贴之前,你最好先检查一下f的大小,如果它大于50x50的话,粘贴时只会显示左上角的部分。