Как создать изображение из строки? - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь создать файл изображения из строки, но пока мне не повезло. Используя ImageDraw, я могу напечатать строку в файле изображения, но это не то, что я намерен делать. Я хочу создать простой файл изображения из набора символов.

Редактировать. Представьте себе гипотетический случай создания художественного текста ASCII для изображения, но вместо создания выходного текстового файла создайте файл изображения. Мой код состоит из нескольких циклов, и использование Matplotlib повлияет на производительность моего кода.

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

вы можете попробовать matplotlib:

import matplotlib.pyplot as plt
plt.text(0,0,mystring)
plt.savefig("mysentence.png", dpi=100)
0 голосов
/ 18 марта 2019

Вы можете использовать метод PIL.Image.frombytes

import PIL

my_string = b'\xf8\xff\xb0\xbc\xd8]\xba\xdf0\xbd\xdeE\xfb\xff\xd1\xf1\xff\xbf\xb4\xd9p\xad\xd9F\xae\xd7U\xf2\xff\xd6\xdf\xff\xdc\xde\xff\xd2m\xa8L\xe0\xff\xc5\xe0\xff\xe1F\x9a\\I\x9e]E\x9bTD\x9aSK\x9fa1\xadO,\xa7L3\xaeT/\xa9R.\xa8Q'
img = Image.frombytes("RGB", (5,5), my_string)
img.show()

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

В моем случае my_string содержит RGB-изображение, которое составляет 3 байта на пиксель, а изображение имеет ширину 5 пикселей и высоту 5 пикселей.

Поэтому my_string следуетимеют длину 75 байтов (3 * 5 * 5)

...