- pygame.pixelcopy
-
модуль pygame для копирования пиксельных массивов
Модуль
pygame.pixelcopyсодержит функции для копирования между поверхностями и объектами, экспортирующими интерфейс массивов. Он является бэкендом дляpygame.surfarray, добавляя поддержку NumPy. Но pixelcopy более универсален и предназначен для прямого использования.Интерфейс структуры массива раскрывает данные массива стандартным образом. Он был введён в NumPy. В Python 2.7 и выше он заменён новым протоколом буфера, хотя протокол буфера всё ещё находится в стадии разработки. Интерфейс структуры массива, с другой стороны, стабилен и работает с более ранними версиями Python. Поэтому на данный момент интерфейс структуры массива является преобладающим способом, которым pygame обрабатывает интроспекцию массивов.
Для двумерных массивов целых значений пикселей значения сопоставляются с форматом пикселей соответствующей поверхности. Чтобы получить фактический цвет значения пикселя, используйте
pygame.Surface.unmap_rgb(). Двумерные массивы могут использоваться непосредственно только между поверхностями с одинаковой структурой пикселей.Новая функция в pygame 1.9.2.
- pygame.pixelcopy.surface_to_array()
-
копирование пикселей поверхности в массивsurface_to_array(array, surface, kind='P', opaque=255, clear=0) -> None
Функция surface_to_array копирует пиксели из объекта Surface в двумерный или трехмерный массив. В зависимости от аргумента
kindи размерности целевого массива, копия может быть сырым значением пикселя, RGB, срезком компонента цвета или значением альфа-прозрачности colorkey. Признанныеkindзначения — это одиночные символьные коды 'P', 'R', 'G', 'B', 'A' и 'C'. Коды kind не чувствительны к регистру, поэтому 'p' эквивалентно 'P'. Первые две размерности целевого объекта должны соответствовать размеру поверхности (w, h).Значение по умолчанию для kind 'P' выполняет непосредственное копирование целых значений пикселя (сопоставленных) в двумерный массив и копирование компонент пикселей 'RGB' (несопоставленные) в трехмерный массив размером (w, h, 3). Для поверхности с 8-битным цветовым отображением это означает, что индекс таблицы копируется в двумерный массив, а не само значение таблицы. Размер элемента двумерного массива должен быть по меньшей мере таким же, как размер байта пикселя поверхности. Размер элемента трехмерного массива должен быть по меньшей мере один байт.
Для кодов копирования 'R', 'G', 'B' и 'A' в целевой двумерный массив копируется отдельный компонент цвета неотображенных пикселей поверхности. Для вида 'A' и поверхностей с исходным альфа-каналом (поверхность была создана с флагом SRCALPHA), имеет colorkey (установлен с помощью
Surface.set_colorkey()) или имеет общую прозрачность (установлен с помощьюSurface.set_alpha()), затем значения альфа-канала соответствуют значениям ожидаемым для SDL поверхности. Если поверхность не имеет явного значения альфа-канала, то целевой массив заполняется значением необязательного аргументаopaquesurface_to_array (значение по умолчанию 255: непрозрачно).Вид копирования 'C' — это особый случай для копирования альфа-канала исходной поверхности с colorkey. В отличие от копирования компонента цвета 'A', значение аргумента
clearиспользуется для совпадений colorkey,opaqueв противном случае. По умолчанию совпадение имеет альфа 0 (полностью прозрачно), а все остальное — альфа 255 (полностью непрозрачно). Это более универсальная реализацияpygame.surfarray.array_colorkey().Для функции surface_to_array, исключение ValueError возникает для целевых массивов с неправильной формой или размером элемента. Исключение TypeError возникает для неверного кода kind. Проблемы, специфичные для поверхности, такие как блокировка, вызывают исключение pygame.error.
- pygame.pixelcopy.array_to_surface()
-
копирование объекта массива на поверхностьarray_to_surface(<surface>, <array>) -> None
- pygame.pixelcopy.map_array()
-
копирование массива в другой массив с использованием формата поверхностиmap_array(<array>, <array>, <surface>) -> None
Преобразование массива значений элементов цвета - (w, h, ..., 3) - в массив пикселей - (w, h) в соответствии с форматом <surface>.
- pygame.pixelcopy.make_surface()
-
Создание новой поверхности, аналогичной данным и формату массиваpygame.pixelcopy.make_surface(array) -> Surface
Создаёт новую поверхность, которая наилучшим образом соответствует данным и формату массива. Массив может быть двумерным или трехмерным с любыми целыми значениями.
Редактировать на GitHub
© Pygame Developers.
Licensed under the GNU LGPL License version 2.1.
https://www.pygame.org/docs/ref/pixelcopy.html