У меня есть следующий код, который создает новое изображение из некоторых существующих изображений.
from PIL import Image as pyImage
def create_compound_image(back_image_path, fore_image_path, fore_x_position):
back_image_size = get_image_size(back_image_path)
fore_image_size = get_image_size(fore_image_path)
new_image_width = (fore_image_size[0] / 2) + back_image_size[0]
new_image_height = fore_image_size[1] + back_image_size[1]
new_image = create_new_image_canvas(new_image_width, new_image_height)
back_image = pyImage.open(back_image_path)
fore_image = pyImage.open(fore_image_path)
new_image.paste(back_image, (0, 0), mask = None)
new_image.paste(fore_image, (fore_x_position, back_image_size[1]), mask = None)
return new_image
Позже в коде у меня есть что-то вроде этого:
from kivy.uix.image import Image
img = Image(source = create_compound_image(...))
Если я сделаю это выше, я получу сообщение о том, что Image.source only accepts string/unicode
.
Если я создам объект StringIO.StringIO()
из нового изображения и попытаюсь использовать его в качестве источника, сообщение об ошибке будет таким же, как и выше. Если я использую вывод метода getvalue() объекта StringIO в качестве источника, сообщение состоит в том, что source must be encoded string without NULL bytes, not str
.
Как правильно использовать вывод функции create_compound_image()
в качестве источника при создании объекта изображения kivy?