Найти - Пользователи
Полная версия: PyGame + PIL
Начало » Python для новичков » PyGame + PIL
1
Lord_Prizrak
Здравствуйте.
Начал понемного ковыряться с 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)
Lord_Prizrak
Выяснилась новая вещь. Так странно обрабатываются только эти изображения. Если с помошью PIL открываю любую другую картинку и передаю её через буффер в PyGame то всё нормально. А нужная мне картинка через буфер не передаётся. Хотя с диска PyGame её читает нормально. Можно конечно всё, что мне нужно получать PILом, сохранять на диск в темпы куда-нить, а потом открывать с помощью PyGame, но мне такой подход ну не как не нравится.
Андрей Светлов
Вы пишете в форум, желая поговорить сами с собой?
igor.kaist
Lord_Prizrak
Так странно обрабатываются только эти изображения.
а что представляют их себя изображения? RGB, RGBA?
Андрей Светлов
igor.kaist
Палитровый режим, очевидно. При этом автор не желает показать, на каких данных у него этот код не работает.
Как получались картинка и палитра, верно ли они составлены - тоже неясно.

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

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

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

Прошу прощения, просто первый раз в жизни вопрос на форуме задаю, до этого гугль всегда помогал (впринципе и в этот раз тоже), или документация…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB