Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2011 09:59:50

Lord_Prizrak
От:
Зарегистрирован: 2010-08-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyGame + PIL

Здравствуйте.
Начал понемного ковыряться с PyGame и возникла такая проблема… Получаю изображение в raw, читаю его с помошью PIL, а затем передаю в PyGame через буфер. В итоге вместо изображения простое черноe пятно. Eсли сохраняю из PIL в PCX и открываю PyGAME то всё нормально. И нагуглить, что-то не удаётся.
Вот кусок кода:

    im = Image.frombuffer('RGB', (width, height), imga, 'raw', 'P', 0, 1)
im.putpalette(imga_palet)
im.save("./tmp/123.pcx", "pcx")
buff = im.tostring()
surf1 = pygame.image.fromstring(buff, im.size, im.mode)



Офлайн

#2 Янв. 28, 2011 03:59:31

Lord_Prizrak
От:
Зарегистрирован: 2010-08-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyGame + PIL

Выяснилась новая вещь. Так странно обрабатываются только эти изображения. Если с помошью PIL открываю любую другую картинку и передаю её через буффер в PyGame то всё нормально. А нужная мне картинка через буфер не передаётся. Хотя с диска PyGame её читает нормально. Можно конечно всё, что мне нужно получать PILом, сохранять на диск в темпы куда-нить, а потом открывать с помощью PyGame, но мне такой подход ну не как не нравится.



Офлайн

#3 Янв. 28, 2011 07:36:47

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

PyGame + PIL

Вы пишете в форум, желая поговорить сами с собой?



Офлайн

#4 Янв. 28, 2011 08:00:29

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

PyGame + PIL

Lord_Prizrak
Так странно обрабатываются только эти изображения.
а что представляют их себя изображения? RGB, RGBA?



Офлайн

#5 Янв. 28, 2011 08:55:30

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

PyGame + PIL

igor.kaist
Палитровый режим, очевидно. При этом автор не желает показать, на каких данных у него этот код не работает.
Как получались картинка и палитра, верно ли они составлены - тоже неясно.

Зачем в pygame использовать палитру?
И отчего ее не устанавливать для получившейся поверхности?

Видишь, сколько вопросов?
И на них всего пять неверифицируемых строчек кода.



Офлайн

#6 Янв. 28, 2011 15:51:52

Lord_Prizrak
От:
Зарегистрирован: 2010-08-06
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PyGame + PIL

Картинки брались из ресурсников игры Heroes III: SoD. Расширение у файлов .pcx, но ими они не являются. Впринципе первой строчкой моего кода они как раз и читались из буфера куда их положил код потрошения .lod-а, и читалось правильно. Что там за формат, толком не понял (о формате “P” первый раз слышу).

С проблемой тоже справился, надо было всего-лишь вызвать im = im.convert(“RGB”) для превращения картинки из некоего формата “Р”, в обычный “RGB”. После этой операции всё прекрасно заработало.

Прошу прощения, просто первый раз в жизни вопрос на форуме задаю, до этого гугль всегда помогал (впринципе и в этот раз тоже), или документация…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version