Я использую концепцию снимков экрана на основе C из ответа JHolta в снимок экрана с помощью скрипта Python. [Linux] для создания снимков экрана, которые я хотел бы отображать в PyGame. С некоторыми незначительными изменениями (добавление extern "C"
к функциям и импорт Xutil вместо Xlib) предоставленный код работает на удивление хорошо. Короче говоря, он использует Image.frombuffer
в массиве байтов, возвращаемом библиотекой C. При использовании show()
изображение и все, что с ним связано, отображается ImageMagick.
Однако, если я конвертирую его в PyGame Python 3 согласно PIL и pygame.image, я только получить черную поверхность. Однако это непростая проблема: если я рисую изображение перед его преобразованием в изображение PyGame (как в OP последней ссылки), оно отображается на черном фоне при отображении результата. Кроме того, print
просмотр байтовых объектов из PILImage.tobytes
и pygame.image.tostring
показывает, что они оба содержат данные и их len
идентичны.
Что я здесь делаю не так? Я с удовольствием предоставлю код, если это необходимо, но я думаю, что это скорее концептуальная проблема, и я особо не менял фрагменты из этих ответов.
(Между прочим, аналогичная проблема в Python 2, но там PyGame использует str
вместо byte
для tostring
/ fromstring
, а печать tostring
, похоже, дает пустую строку.)