Table Of Contents
Изображение¶
Основные классы для загрузки изображений и их преобразования в
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)