Версия 2.1.0

Quick search

Изображение

Основные классы для загрузки изображений и их преобразования в Texture. Сырые данные изображения можно хранить в памяти для последующего доступа.

Изменено в версии 1.11.0: Добавлена поддержка изображений argb и abgr

Загрузка изображений в память

Добавлено в версии 1.9.0: Официальная поддержка загрузки в память. Не все провайдеры поддерживают это, но на данный момент работают SDL2, pygame, pil и imageio.

Для загрузки изображения по имени файла обычно используется следующий код:

from kivy.core.image import Image as CoreImage
im = CoreImage("image.png")

Вы также можете загрузить данные изображения напрямую из блока памяти. Вместо передачи имени файла, вам нужно передать данные в виде объекта BytesIO вместе с параметром "ext". Оба параметра обязательны:

import io
from kivy.core.image import Image as CoreImage
data = io.BytesIO(open("image.png", "rb").read())
im = CoreImage(data, ext="png")

По умолчанию изображение не будет кэшироваться, так как наш внутренний кеш требует наличие имени файла. Если вы хотите кэшировать, добавьте имя файла, представляющее ваш файл (оно будет использоваться только для кэширования):

import io
from kivy.core.image import Image as CoreImage
data = io.BytesIO(open("image.png", "rb").read())
im = CoreImage(data, ext="png", filename="image.png")

Сохранение изображения

Объект CoreImage можно сохранить в файл:

from kivy.core.image import Image as CoreImage
image = CoreImage(...)
image.save("/tmp/test.png")

Или вы можете получить байты (новое в 1.11.0):

import io from kivy.core.image import Image as CoreImage data = io.BytesIO() image = CoreImage(…) image.save(data, fmt=”png”) png_bytes = data.read()

class kivy.core.image.Image(arg, **kwargs)[source]

Базовый класс: kivy.event.EventDispatcher

Загрузка изображения и сохранение его размера и текстуры.

Изменено в версии 1.0.7: Добавлен атрибут mipmap. Удалены texture_mipmap и texture_rectangle.

Изменено в версии 1.0.8: Виджет Image может изменить свою текстуру. Введено новое событие ‘on_texture’. Добавлены новые методы для обработки последовательной анимации.

Parameters
arg: может быть строкой (str), Texture, BytesIO или объектом Image

Строка, содержащая путь к файлу изображения или URI данных для загрузки; или объект Texture, который будет обернут в объект Image; или объект BytesIO, содержащий сырые данные изображения; или уже существующий объект изображения, в этом случае будет возвращена реальная копия данного объекта изображения.

keep_data: bool, по умолчанию False

Сохранение данных изображения при создании текстуры.

mipmap: bool, по умолчанию False

Создание mipmap для текстуры.

anim_delay: float, по умолчанию .25

Задержка в секундах между каждым кадром анимации. Меньшие значения означают более быструю анимацию.

ext: str, только с аргументом BytesIO arg

Расширение файла для определения способа загрузки сырых данных изображения.

filename: str, только с аргументом BytesIO arg

Имя файла, используемое в кеше изображений для сырых данных изображения.

property anim_available

Возвращает True, если у этого экземпляра Image доступна анимация.

Добавлено в версии 1.0.8.

property anim_delay

Задержка между каждым кадром анимации. Меньшее значение означает более быструю анимацию.

Добавлено в версии 1.0.8.

property anim_index

Возвращает номер индекса изображения, которое в данный момент находится в текстуре.

Добавлено в версии 1.0.8.

anim_reset(allow_anim)[source]

Сбрасывает анимацию, если она доступна.

Добавлено в версии 1.0.8.

Parameters
allow_anim: bool

Указывает, должна ли анимация начать воспроизведение заново или нет.

Использование:

# Начать/сбросить анимацию
image.anim_reset(True)

# Или остановить анимацию
image.anim_reset(False)

Вы можете изменить скорость анимации во время ее воспроизведения:

# Установить 20 FPS
image.anim_delay = 1 / 20.
property filename

Получить/установить имя файла изображения.

property height

Высота изображения.

property image

Получить/установить объект данных изображения.

static load(filename, **kwargs)[source]

Загрузить изображение.

Parameters
filename: str

Имя файла изображения.

keep_data: bool, по умолчанию False

Сохранить данные изображения при создании текстуры.

load_memory(data, ext, filename='__inline__')[source]

(внутренний) Метод для загрузки изображения из сырых данных.

property nocache

Указывает, будет ли текстура сохранена в кеше или нет.

Добавлено в версии 1.6.0.

on_texture(*largs)[source]
Это событие срабатывает, когда изменяется ссылка или содержание текстуры.

Обычно используется для последовательных изображений.

Добавлено в версии 1.0.8.

read_pixel(x, y)[исходный код]

Для данной локальной позиции x/y возвращает цвет пикселя в этой позиции.

Предупреждение

Эта функция может использоваться только с изображениями, загруженными с ключевым словом keep_data=True. Например:

m = Image.load('image.png', keep_data=True)
color = m.read_pixel(150, 150)
Parameters
x: int

Локальная координата x пикселя в вопросе.

y: int

Локальная координата y пикселя в вопросе.

remove_from_cache()[исходный код]

Удалить изображение из кеша. Это облегчает повторную загрузку изображений с диска в случае изменения содержания изображения.

Добавлено в версии 1.3.0.

Использование:

im = CoreImage('1.jpg')
# -- что-то сделать --
im.remove_from_cache()
im = CoreImage('1.jpg')
# на этот раз изображение будет загружено с диска заново
save(filename, flipped=False, fmt=None)[исходный код]

Сохранить текстуру изображения в файл.

Имя файла должно иметь расширение ‘.png’, потому что данные текстуры, считанные с GPU, имеют формат RGBA. ‘.jpg’ может сработать, но не был тщательно протестирован, поэтому некоторые поставщики могут не работать при его использовании. Любые другие расширения официально не поддерживаются.

Параметр flipped переворачивает сохраненное изображение вертикально и по умолчанию равен False.

Пример:

# Сохранить объект изображения core
from kivy.core.image import Image
img = Image('hello.png')
img.save('hello2.png')

# Сохранить текстуру
texture = Texture.create(...)
img = Image(texture)
img.save('hello3.png')

Добавлено в версии 1.7.0.

Изменено в версии 1.8.0: Параметр flipped добавлен для переворачивания изображения перед сохранением, по умолчанию равен False.

Изменено в версии 1.11.0: Параметр fmt добавлен для принудительной установки формата вывода файла. Теперь имя файла может быть объектом BytesIO.

property size

Размер изображения (ширина, высота)

property texture

Текстура изображения

property width

Ширина изображения

class kivy.core.image.ImageData(width, height, fmt, data, source=None, flip_vertical=True, source_image=None, rowlength=0)[исходный код]

Базовый класс: builtins.object

Контейнер для изображений и изображений с уровнем детализации (mipmap). Контейнер всегда будет содержать как минимум уровень детализации 0.

add_mipmap(level, width, height, data, rowlength)[исходный код]

Добавить изображение для определенного уровня детализации (mipmap).

Добавлено в версии 1.0.7.

property data

Данные изображения. (Если у изображения есть уровень детализации, будет использоваться уровень 0)

flip_vertical

Указывает, потребуется ли вертикальное отображение текстуры

fmt

Формат декодированного изображения, один из доступных форматов текстуры

get_mipmap(level)[исходный код]

Получить изображение с уровнем детализации (mipmap) по указанному уровню, если оно существует

Добавлено в версии 1.0.7.

property height

Высота изображения в пикселях. (Если у изображения есть уровень детализации, будет использоваться уровень 0)

iterate_mipmaps()[исходный код]

Итерация по всем доступным уровням детализации (mipmap).

Добавлено в версии 1.0.7.

mipmaps

Данные для каждого уровня детализации (mipmap).

property rowlength

Длина строки изображения. (Если у изображения есть уровень детализации, будет использоваться уровень 0)

Добавлено в версии 1.9.0.

property size

Размер изображения (ширина, высота) в пикселях. (Если у изображения есть уровень детализации, будет использоваться уровень 0)

source

Исходное изображение, если доступно

property width

Ширина изображения в пикселях. (Если у изображения есть уровень детализации, будет использоваться уровень 0)