Может ли кто-нибудь помочь мне с моей функцией PIL? - PullRequest
0 голосов
/ 01 декабря 2010
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 в белый холст 500х500. (посередине).

Это моя функция, но у меня много проблем. У меня так много проблем, и я даже не коснулся части высоты / ширины.

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 Ответ

0 голосов
/ 01 декабря 2010

первый аргумент для вставки должен быть Image, а не StringIO, поэтому

используйте image.paste(Image.open(StringIO(f)), (0,0, 50, 50)) вместо

но вам, вероятно, следует проверить размер f перед вставкой, он вставит только верхний левый угол, если он больше, чем 50x50

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...