Spec-Zone.ru › Pygame
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 поверхности. Если поверхность не имеет явного значения альфа-канала, то целевой массив заполняется значением необязательного аргумента opaque surface_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.surfarray.blit_array().

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API