Можно ли поместить изображение непосредственно в программу Python? - PullRequest
0 голосов
/ 12 мая 2018

Я сделал простую игру на python, используя библиотеку pygame, и она отлично работала. Единственная проблема заключается в том, что для этого требовались изображения, а это означало, что если бы я хотел поделиться своим творением, мне пришлось бы поместить все это в zip-архив (или другой архив), что является проблемой, особенно когда вы постоянно обновляете программу.

Я знаю, это звучит немного глупо, но есть ли способ кодировать файл изображения, чтобы он мог быть сохранен в самом файле python? Например, открывая изображение в текстовом редакторе, вы можете видеть изображение как текст. Могу ли я вставить это в python и использовать библиотеку для декодирования обратно в изображение? Если нет, я мог бы просто поместить изображения на сервер и заставить программу каждый раз получать их. Я подумал, что спрашивать не мешало бы.

1 Ответ

0 голосов
/ 12 мая 2018

Да, это возможно и на самом деле довольно просто. Сначала необходимо декодировать поверхность в строку, используя функцию pygame.image.tostring(image, format). Требуется поверхность и формат (вероятно, RGB или RGBA). Затем вы можете сохранить возвращенную строку в вашем скрипте:

string = pygame.image.tostring(surface, 'RGB')
print(string) # A long bytes string (b'\xff\xff\x00\xff\xff\x00\xff\xff\x00\xff\xff\x00\xff\xff\x00\xff....')

Затем вы загружаете изображение с pygame.image.fromstring(image, size, format) (где размер - ожидаемый размер поверхности)

string = b'\xff\xff\x00\xff\xff\x00\xff\xff\x00\xff\xff\x00\xff\xff\x00\xff....'
surface = pygame.image.fromstring(string, surface.get_size(), 'RGB')
print(surface)

Вы просто копируете вывод tostring в скрипт.

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