Форум сайта python.su
Здравствуйте.
Начал понемного ковыряться с 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)
Офлайн
Выяснилась новая вещь. Так странно обрабатываются только эти изображения. Если с помошью PIL открываю любую другую картинку и передаю её через буффер в PyGame то всё нормально. А нужная мне картинка через буфер не передаётся. Хотя с диска PyGame её читает нормально. Можно конечно всё, что мне нужно получать PILом, сохранять на диск в темпы куда-нить, а потом открывать с помощью PyGame, но мне такой подход ну не как не нравится.
Офлайн
Вы пишете в форум, желая поговорить сами с собой?
Офлайн
Lord_Prizrakа что представляют их себя изображения? RGB, RGBA?
Так странно обрабатываются только эти изображения.
Офлайн
igor.kaist
Палитровый режим, очевидно. При этом автор не желает показать, на каких данных у него этот код не работает.
Как получались картинка и палитра, верно ли они составлены - тоже неясно.
Зачем в pygame использовать палитру?
И отчего ее не устанавливать для получившейся поверхности?
Видишь, сколько вопросов?
И на них всего пять неверифицируемых строчек кода.
Офлайн
Картинки брались из ресурсников игры Heroes III: SoD. Расширение у файлов .pcx, но ими они не являются. Впринципе первой строчкой моего кода они как раз и читались из буфера куда их положил код потрошения .lod-а, и читалось правильно. Что там за формат, толком не понял (о формате “P” первый раз слышу).
С проблемой тоже справился, надо было всего-лишь вызвать im = im.convert(“RGB”) для превращения картинки из некоего формата “Р”, в обычный “RGB”. После этой операции всё прекрасно заработало.
Прошу прощения, просто первый раз в жизни вопрос на форуме задаю, до этого гугль всегда помогал (впринципе и в этот раз тоже), или документация…
Офлайн