Ошибка строки PIL - PullRequest
       3

Ошибка строки PIL

3 голосов
/ 12 января 2012

У меня есть изображение в формате png, и мне нужно сохранить его как строку, а затем снова открыть его с помощью PIL.Я пытаюсь сделать это так:

output = StringIO.StringIO()
old_image.save(output, format="PNG")
contents = output.getvalue()
output.close()

new_image = Image.fromstring(contents, "RGBA", old_image.size)

но выдает ошибку: TypeError: 'argument 1 must be string without null bytes, not str'

Как решить эту проблему?

1 Ответ

3 голосов
/ 12 января 2012

У вас есть аргументы в обратном порядке:

Image.fromstring(mode, size, data, decoder_name='raw', *args)

так

Image.fromstring("RGBA", old_image.size, contents)

Но учтите, что намного проще читать непосредственно из объекта StringIO:

output = StringIO.StringIO()
old_image.save(output, format="PNG")

output.seek(0)
new_image = Image.open(output)
...