Image

Наследует: Resource < RefCounted < Object

Тип данных изображения.

Описание

Исходный тип данных изображения. Содержит данные изображения, которые могут быть преобразованы в ImageTexture, и предоставляет часто используемые методы обработки изображений. Максимальная ширина и высота для Image равны MAX_WIDTH и MAX_HEIGHT.

Image нельзя напрямую присвоить свойству текстуры объекта (например, Sprite2D.texture), и его необходимо сначала преобразовать вручную в ImageTexture.

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

Примечание: Максимальный размер изображения составляет 16384×16384 пикселей из-за ограничений графического оборудования. Изображения большего размера могут не импортироваться.

Обучающие материалы

Свойства

Dictionary

data

{ "data": PackedByteArray(), "format": "Lum8", "height": 0, "mipmaps": false, "width": 0 }

Методы

void

adjust_bcs(brightness: float, contrast: float, saturation: float)

void

blend_rect(src: Image, src_rect: Rect2i, dst: Vector2i)

void

blend_rect_mask(src: Image, mask: Image, src_rect: Rect2i, dst: Vector2i)

void

blit_rect(src: Image, src_rect: Rect2i, dst: Vector2i)

void

blit_rect_mask(src: Image, mask: Image, src_rect: Rect2i, dst: Vector2i)

void

bump_map_to_normal_map(bump_scale: float = 1.0)

void

clear_mipmaps()

Error

compress(mode: CompressMode, source: CompressSource = 0, astc_format: ASTCFormat = 0)

Error

compress_from_channels(mode: CompressMode, channels: UsedChannels, astc_format: ASTCFormat = 0)

Dictionary

compute_image_metrics(compared_image: Image, use_luma: bool)

void

convert(format: Format)

void

copy_from(src: Image)

Image

create(width: int, height: int, use_mipmaps: bool, format: Format) static

Image

create_empty(width: int, height: int, use_mipmaps: bool, format: Format) static

Image

create_from_data(width: int, height: int, use_mipmaps: bool, format: Format, data: PackedByteArray) static

void

crop(width: int, height: int)

Error

decompress()

AlphaMode

detect_alpha() const

UsedChannels

detect_used_channels(source: CompressSource = 0) const

void

fill(color: Color)

void

fill_rect(rect: Rect2i, color: Color)

void

fix_alpha_edges()

void

flip_x()

void

flip_y()

Error

generate_mipmaps(renormalize: bool = false)

PackedByteArray

get_data() const

int

get_data_size() const

Format

get_format() const

int

get_height() const

int

get_mipmap_count() const

int

get_mipmap_offset(mipmap: int) const

Color

get_pixel(x: int, y: int) const

Color

get_pixelv(point: Vector2i) const

Image

get_region(region: Rect2i) const

Vector2i

get_size() const

Rect2i

get_used_rect() const

int

get_width() const

bool

has_mipmaps() const

bool

is_compressed() const

bool

is_empty() const

bool

is_invisible() const

void

linear_to_srgb()

Error

load(path: String)

Error

load_bmp_from_buffer(buffer: PackedByteArray)

Error

load_dds_from_buffer(buffer: PackedByteArray)

Error

load_exr_from_buffer(buffer: PackedByteArray)

Image

load_from_file(path: String) static

Error

load_jpg_from_buffer(buffer: PackedByteArray)

Error

load_ktx_from_buffer(buffer: PackedByteArray)

Error

load_png_from_buffer(buffer: PackedByteArray)

Error

load_svg_from_buffer(buffer: PackedByteArray, scale: float = 1.0)

Error

load_svg_from_string(svg_str: String, scale: float = 1.0)

Error

load_tga_from_buffer(buffer: PackedByteArray)

Error

load_webp_from_buffer(buffer: PackedByteArray)

void

normal_map_to_xy()

void

premultiply_alpha()

void

resize(width: int, height: int, interpolation: Interpolation = 1)

void

resize_to_po2(square: bool = false, interpolation: Interpolation = 1)

Image

rgbe_to_srgb()

void

rotate_90(direction: ClockDirection)

void

rotate_180()

Error

save_dds(path: String) const

PackedByteArray

save_dds_to_buffer() const

Error

save_exr(path: String, grayscale: bool = false) const

PackedByteArray

save_exr_to_buffer(grayscale: bool = false) const

Error

save_jpg(path: String, quality: float = 0.75) const

PackedByteArray

save_jpg_to_buffer(quality: float = 0.75) const

Error

save_png(path: String) const

PackedByteArray

save_png_to_buffer() const

Error

save_webp(path: String, lossy: bool = false, quality: float = 0.75) const

PackedByteArray

save_webp_to_buffer(lossy: bool = false, quality: float = 0.75) const

void

set_data(width: int, height: int, use_mipmaps: bool, format: Format, data: PackedByteArray)

void

set_pixel(x: int, y: int, color: Color)

void

set_pixelv(point: Vector2i, color: Color)

void

shrink_x2()

void

srgb_to_linear()


Перечисления

enum Format: 🔗

Format FORMAT_L8 = 0

Формат текстуры с единой 8-битной глубиной, представляющей яркость.

Format FORMAT_LA8 = 1

Формат текстуры OpenGL с двумя значениями: яркостью и альфа, каждое из которых хранится в 8 битах.

Format FORMAT_R8 = 2

Формат текстуры OpenGL RED с одним компонентом и глубиной цвета 8 бит.

Format FORMAT_RG8 = 3

Формат текстуры OpenGL RG с двумя компонентами и битовой глубиной 8 для каждого.

Format FORMAT_RGB8 = 4

Текстурный формат OpenGL RGB состоит из трех компонентов, каждый с битовой глубиной 8.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_RGBA8 = 5

Текстурный формат OpenGL RGBA с четырьмя компонентами, каждый с битовой глубиной 8.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_RGBA4444 = 6

Формат текстуры OpenGL RGBA с четырьмя компонентами, каждый с глубиной цвета 4.

Format FORMAT_RGB565 = 7

Формат текстуры OpenGL RGB с тремя компонентами. Красный и синий имеют битовую глубину 5, а зеленый имеет битовую глубину 6.

Format FORMAT_RF = 8

Формат текстуры OpenGL GL_R32F, в котором есть один компонент — 32-битное значение с плавающей точкой.

Format FORMAT_RGF = 9

Формат текстуры OpenGL GL_RG32F, в котором есть два компонента, каждый из которых представляет собой 32-битное значение с плавающей точкой.

Format FORMAT_RGBF = 10

Формат текстуры OpenGL GL_RGB32F, в котором есть три компонента, каждый из которых представляет собой 32-битное значение с плавающей точкой.

Format FORMAT_RGBAF = 11

Формат текстуры OpenGL GL_RGBA32F, в котором имеется четыре компонента, каждый из которых представляет собой 32-битное значение с плавающей точкой.

Format FORMAT_RH = 12

Формат текстуры OpenGL GL_R16F, в котором есть один компонент — 16-битное значение с плавающей запятой «половинной точности».

Format FORMAT_RGH = 13

Формат текстуры OpenGL GL_RG16F, в котором есть два компонента, каждый из которых представляет собой 16-битное значение с плавающей запятой «половинной точности».

Format FORMAT_RGBH = 14

Формат текстуры OpenGL GL_RGB16F, в котором есть три компонента, каждый из которых представляет собой 16-битное значение с плавающей запятой «половинной точности».

Format FORMAT_RGBAH = 15

Формат текстуры OpenGL GL_RGBA16F, в котором имеется четыре компонента, каждый из которых представляет собой 16-битное значение с плавающей запятой «половинной точности».

Format FORMAT_RGBE9995 = 16

Специальный формат текстуры OpenGL, в котором три цветовых компонента имеют точность 9 бит и все три имеют одну 5-битную экспоненту.

Format FORMAT_DXT1 = 17

Формат текстур S3TC использует блочное сжатие 1 и является наименьшим вариантом S3TC, предоставляя только 1 бит альфа-канала и цветовые данные, предварительно умноженные на альфа-канал.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_DXT3 = 18

Формат текстур S3TC использует блочное сжатие 2, и цветовые данные интерпретируются как не умноженные предварительно на альфа-канал. Хорошо подходит для изображений с резкими переходами альфа-канала между полупрозрачными и непрозрачными областями.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_DXT5 = 19

Формат текстур S3TC, также известный как Block Compression 3 или BC3, содержит 64 бита данных альфа-канала, за которыми следуют 64 бита данных цвета, закодированных в формате DXT1. Данные цвета не умножаются на альфа-канал, как и в DXT3. DXT5 обычно обеспечивает лучшие результаты для прозрачных градиентов по сравнению с DXT3.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_RGTC_R = 20

Формат текстуры, использующий сжатие красно-зеленой текстуры, нормализующий данные красного канала с использованием того же алгоритма сжатия, который DXT5 использует для альфа-канала.

Format FORMAT_RGTC_RG = 21

Формат текстуры, использующий сжатие красно-зеленой текстуры, нормализующий данные красного и зеленого каналов с использованием того же алгоритма сжатия, который DXT5 использует для альфа-канала.

Format FORMAT_BPTC_RGBA = 22

Формат текстур, использующий сжатие BPTC с нормализованными беззнаковыми компонентами RGBA.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_BPTC_RGBF = 23

Формат текстуры, использующий сжатие BPTC со знаковыми компонентами RGB с плавающей точкой.

Format FORMAT_BPTC_RGBFU = 24

Формат текстуры, использующий сжатие BPTC с беззнаковыми компонентами RGB с плавающей точкой.

Format FORMAT_ETC = 25

Формат сжатия текстур Ericsson 1, также называемый "ETC1", и является частью графического стандарта OpenGL ES. Этот формат не может хранить альфа-канал.

Format FORMAT_ETC2_R11 = 26

Формат сжатия текстур Ericsson 2 (вариант R11_EAC), который предоставляет один канал не подписанных данных.

Format FORMAT_ETC2_R11S = 27

Формат сжатия текстур Ericsson 2 (вариант SIGNED_R11_EAC), который обеспечивает один канал подписанных данных.

Format FORMAT_ETC2_RG11 = 28

Формат сжатия текстур Ericsson 2 (вариант RG11_EAC), который предоставляет два канала неподписанных данных.

Format FORMAT_ETC2_RG11S = 29

Формат сжатия текстур Ericsson 2 (вариант SIGNED_RG11_EAC), который обеспечивает два канала подписанных данных.

Format FORMAT_ETC2_RGB8 = 30

Формат сжатия текстур Ericsson 2 (RGB8), который является продолжением ETC1 и сжимает данные RGB888.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_ETC2_RGBA8 = 31

Формат сжатия текстур Ericsson 2 (RGBA8), который сжимает данные RGBA8888 с полной поддержкой альфа-канала.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_ETC2_RGB8A1 = 32

Формат сжатия текстур Ericsson 2 (RGB8_PUNCHTHROUGH_ALPHA1), который сжимает данные RGBA, делая альфа-канал либо полностью прозрачным, либо полностью непрозрачным.

Примечание: При создании ImageTexture выполняется нелинейное преобразование sRGB в линейное кодирование.

Format FORMAT_ETC2_RA_AS_RG = 33

Формат сжатия текстур Ericsson 2 (вариант RGBA8), который сжимает данные RA и интерпретирует их как два канала (красный и зеленый). См. также FORMAT_ETC2_RGBA8.

Format FORMAT_DXT5_RA_AS_RG = 34

Формат текстуры S3TC, также известный как Block Compression 3 или BC3, который сжимает данные RA и интерпретирует их как два канала (красный и зеленый). См. также FORMAT_DXT5.

Format FORMAT_ASTC_4x4 = 35

Адаптивное масштабируемое сжатие текстур. Это реализует режим 4×4 (высокое качество).

Format FORMAT_ASTC_4x4_HDR = 36

Тот же формат, что и FORMAT_ASTC_4x4, но с подсказкой, сообщающей графическому процессору, что он используется для HDR.

Format FORMAT_ASTC_8x8 = 37

Адаптивное масштабируемое сжатие текстур. Это реализует режим 8×8 (низкое качество).

Format FORMAT_ASTC_8x8_HDR = 38

Тот же формат, что и FORMAT_ASTC_8x8, но с подсказкой, сообщающей графическому процессору, что он используется для HDR.

Format FORMAT_R16 = 39

Формат текстур OpenGL GL_R16, содержащий один компонент — 16-битное беззнаковое нормализованное целое число. Поскольку значение нормализовано, каждый компонент ограничен диапазоном от 0.0 до 1.0 (включительно).

Примечание: Из-за ограниченной аппаратной поддержки рекомендуется использовать его в основном на настольных компьютерах или игровых консолях. Он может не поддерживаться на мобильных устройствах или в веб-браузере и, следовательно, будет преобразован в FORMAT_RF.

Format FORMAT_RG16 = 40

Формат текстур OpenGL GL_RG16, содержащий два компонента, каждый из которых представляет собой 16-битное беззнаковое нормализованное целое число. Поскольку значение нормализовано, каждый компонент ограничен диапазоном от 0.0 до 1.0 (включительно).

Примечание: Из-за ограниченной аппаратной поддержки рекомендуется использовать его в основном на настольных компьютерах или игровых консолях. Он может не поддерживаться на мобильных устройствах или в веб-браузере и, следовательно, будет преобразован в FORMAT_RGF.

Format FORMAT_RGB16 = 41

Формат текстур OpenGL GL_RGB16, содержащий три компонента, каждый из которых представляет собой 16-битное беззнаковое нормализованное целое число. Поскольку значение нормализовано, каждый компонент ограничен диапазоном от 0.0 до 1.0 (включительно).

Примечание: Из-за ограниченной аппаратной поддержки рекомендуется использовать его в основном на настольных компьютерах или игровых консолях. Он может не поддерживаться на мобильных устройствах или в веб-браузере и, следовательно, будет преобразован в FORMAT_RGBF.

Format FORMAT_RGBA16 = 42

Формат текстур OpenGL GL_RGBA16, содержащий четыре компонента, каждый из которых представляет собой 16-битное беззнаковое нормализованное целое число. Поскольку значение нормализовано, каждый компонент ограничен диапазоном от 0.0 до 1.0 (включительно).

Примечание: Из-за ограниченной аппаратной поддержки рекомендуется использовать его в основном на настольных компьютерах или игровых консолях. Он может не поддерживаться на мобильных устройствах или в веб-браузере и, следовательно, будет преобразован в FORMAT_RGBAF.

Format FORMAT_R16I = 43

Текстурный формат OpenGL GL_R16UI, содержащий один компонент — 16-битное беззнаковое целое число. Каждый компонент ограничен диапазоном от 0 до 65535 (включительно).

Примечание: При использовании в шейдере текстура требует использования сэмплеров usampler. Кроме того, она поддерживает фильтрацию ближайших соседей только в рендерере Compatibility.

Примечание: При сэмплировании с помощью get_pixel() возвращаемые значения Color необходимо разделить на 65535, чтобы получить правильное значение цвета.

Format FORMAT_RG16I = 44

Текстурный формат OpenGL GL_RG16UI, состоящий из двух компонентов, каждый из которых представляет собой 16-битное беззнаковое целое число. Каждый компонент ограничен диапазоном от 0 до 65535 (включительно).

Примечание: При использовании в шейдере текстура требует использования сэмплеров usampler. Кроме того, она поддерживает фильтрацию ближайших соседей только в рендерере Compatibility.

Примечание: При использовании get_pixel() возвращаемые значения Color необходимо разделить на 65535, чтобы получить правильное значение цвета.

Format FORMAT_RGB16I = 45

Текстурный формат OpenGL GL_RGB16UI, состоящий из трех компонентов, каждый из которых представляет собой 16-битное беззнаковое целое число. Каждый компонент ограничен диапазоном от 0 до 65535 (включительно).

Примечание: При использовании в шейдере текстура требует использования сэмплеров usampler. Кроме того, она поддерживает фильтрацию ближайших соседей только в рендерере Compatibility.

Примечание: При сэмплировании с помощью get_pixel() возвращаемые значения Color необходимо разделить на 65535, чтобы получить правильное значение цвета.

Format FORMAT_RGBA16I = 46

Текстурный формат OpenGL GL_RGBA16UI, состоящий из четырех компонентов, каждый из которых представляет собой 16-битное беззнаковое целое число. Каждый компонент ограничен диапазоном от 0 до 65535 (включительно).

Примечание: При использовании в шейдере текстура требует использования сэмплеров usampler. Кроме того, она поддерживает фильтрацию ближайших соседей только в рендерере Compatibility.

Примечание: При сэмплировании с помощью get_pixel() возвращаемые значения Color необходимо разделить на 65535, чтобы получить правильное значение цвета.

Format FORMAT_MAX = 47

Представляет размер перечисления Format.


enum Interpolation: 🔗

Interpolation INTERPOLATE_NEAREST = 0

Выполняет интерполяцию ближайшего соседа. Если изображение изменено, оно будет пикселизировано.

Interpolation INTERPOLATE_BILINEAR = 1

Выполняет билинейную интерполяцию. Если изменить размер изображения, оно будет размытым. Этот режим быстрее, чем INTERPOLATE_CUBIC, но приводит к снижению качества.

Interpolation INTERPOLATE_CUBIC = 2

Выполняет кубическую интерполяцию. Если изменить размер изображения, оно будет размытым. Этот режим часто дает лучшие результаты по сравнению с INTERPOLATE_BILINEAR, ценой более медленной работы.

Interpolation INTERPOLATE_TRILINEAR = 3

Выполняет билинейную обработку отдельно на двух наиболее подходящих уровнях MIP-карт, затем линейно интерполирует между ними.

Это медленнее, чем INTERPOLATE_BILINEAR, но дает более качественные результаты с гораздо меньшим количеством артефактов алиасинга.

Если изображение не имеет MIP-карт, они будут сгенерированы и использованы внутренне, но на результирующем изображении MIP-карты сгенерированы не будут.

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

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

Interpolation INTERPOLATE_LANCZOS = 4

Выполняет интерполяцию Lanczos. Это самый медленный режим изменения размера изображения, но он обычно дает наилучшие результаты, особенно при уменьшении масштаба изображений.


enum AlphaMode: 🔗

AlphaMode ALPHA_NONE = 0

Изображение полностью непрозрачное. Оно не хранит альфа-канал.

AlphaMode ALPHA_BIT = 1

Изображение содержит либо полностью непрозрачные, либо полностью прозрачные пиксели. Также известно как альфа-канал, проходящий сквозь изображение.

AlphaMode ALPHA_BLEND = 2

В файле изображения хранятся альфа-каналы со значениями от 0.0 до 1.0.


enum CompressMode: 🔗

CompressMode COMPRESS_S3TC = 0

Исп. S3TC компрессию.

CompressMode COMPRESS_ETC = 1

Исп. ETC компрессию.

CompressMode COMPRESS_ETC2 = 2

Исп. ETC2 компрессию.

CompressMode COMPRESS_BPTC = 3

Использовать BPTC компрессию.

CompressMode COMPRESS_ASTC = 4

Используйте ASTC компрессию.

CompressMode COMPRESS_MAX = 5

Представляет размер перечисления CompressMode.


enum UsedChannels: 🔗

UsedChannels USED_CHANNELS_L = 0

Изображение использует только один канал яркости (оттенки серого).

UsedChannels USED_CHANNELS_LA = 1

Изображение использует два канала для яркости и альфа соответственно.

UsedChannels USED_CHANNELS_R = 2

Изображение использует только красный канал.

UsedChannels USED_CHANNELS_RG = 3

Изображение использует два канала: красный и зеленый.

UsedChannels USED_CHANNELS_RGB = 4

Изображение использует три канала: красный, зеленый и синий.

UsedChannels USED_CHANNELS_RGBA = 5

Изображение использует четыре канала: красный, зеленый, синий и альфа.


enum CompressSource: 🔗

CompressSource COMPRESS_SOURCE_GENERIC = 0

Исходная текстура (до сжатия) — обычная текстура. По умолчанию для всех текстур.

CompressSource COMPRESS_SOURCE_SRGB = 1

Исходная текстура (до сжатия) использует нелинейное кодирование sRGB.

CompressSource COMPRESS_SOURCE_NORMAL = 2

Исходная текстура (до сжатия) — это обычная текстура (например, ее можно сжать в два канала).


enum ASTCFormat: 🔗

ASTCFormat ASTC_FORMAT_4x4 = 0

Подсказка, указывающая на необходимость использования высококачественного формата сжатия 4×4 ASTC.

ASTCFormat ASTC_FORMAT_8x8 = 1

Подсказка, указывающая на необходимость использования формата сжатия ASTC низкого качества 8×8.


Константы

MAX_WIDTH = 16777216 🔗

Максимально допустимая ширина для ресурсов Image.

MAX_HEIGHT = 16777216 🔗

Максимально допустимая высота для ресурсов Image.


Описания свойств

Dictionary data = { "data": PackedByteArray(), "format": "Lum8", "height": 0, "mipmaps": false, "width": 0 } 🔗

Содержит все данные о цвете изображения в заданном формате. См. константы Format.


Описания метода

void adjust_bcs(brightness: float, contrast: float, saturation: float) 🔗

Настраивает brightness, contrast и saturation этого изображения на заданные значения. Не работает, если изображение сжато (см. is_compressed()).


void blend_rect(src: Image, src_rect: Rect2i, dst: Vector2i) 🔗

Альфа-смешивания src_rect из изображения src с этим изображением в координатах dst, обрезается соответственно границам обоих изображений. Это изображение и изображение src должны иметь одинаковый формат. src_rect с неположительным размером рассматривается как пустой.


void blend_rect_mask(src: Image, mask: Image, src_rect: Rect2i, dst: Vector2i) 🔗

Альфа-смешивания src_rect из изображения src с этим изображением, используя изображение mask в координатах dst, обрезанное соответственно по обеим границам изображения. Альфа-каналы требуются как для src, так и для mask. Пиксели dst и пиксели src будут смешиваться, если значение альфа соответствующего пикселя маски не равно 0. Это изображение и изображение src должны иметь одинаковый формат. Изображение src и изображение mask должны иметь одинаковый размер (ширину и высоту), но они могут иметь разные форматы. src_rect с неположительным размером рассматривается как пустой.


void blit_rect(src: Image, src_rect: Rect2i, dst: Vector2i) 🔗

Копирует src_rect из изображения src в это изображение с координатами dst, обрезанное соответственно границам обоих изображений. Это изображение и изображение src должны иметь одинаковый формат. src_rect с неположительным размером рассматривается как пустой.

Примечание: Данные альфа-канала в src перезапишут соответствующие данные в этом изображении в целевой позиции. Чтобы смешать альфа-каналы, используйте вместо этого blend_rect().


void blit_rect_mask(src: Image, mask: Image, src_rect: Rect2i, dst: Vector2i) 🔗

Переносит область src_rect из изображения src в это изображение по координатам, заданным dst, обрезанным соответственно по обеим границам изображения. Пиксель src копируется в dst, если соответствующее значение альфа-канала пикселя mask не равно 0. Это изображение и изображение src должны иметь одинаковый формат. Изображение src и изображение mask должны иметь одинаковый размер (ширину и высоту), но они могут иметь разные форматы. src_rect с неположительным размером рассматривается как пустой.


void bump_map_to_normal_map(bump_scale: float = 1.0) 🔗

Преобразует карту рельефа (bump map) в карту нормалей. Карта рельефа обеспечивает смещение высоты на пиксель, тогда как карта нормалей обеспечивает направление нормали на пиксель.


void clear_mipmaps() 🔗

Удаляет MIP-текстуры изображения.


Error compress(mode: CompressMode, source: CompressSource = 0, astc_format: ASTCFormat = 0) 🔗

Сжимает изображение с помощью формата сжатия VRAM для экономии памяти. Не может напрямую обращаться к данным пикселей во время сжатия изображения. Возвращает ошибку, если выбранный режим сжатия недоступен.

Параметр source помогает выбрать наилучший метод сжатия для форматов DXT и ETC2. Он игнорируется для сжатия ASTC.

Параметр astc_format учитывается только при использовании сжатия ASTC; он игнорируется для всех остальных форматов.

Примечание: Метод compress() поддерживается только в сборках редактора. При запуске в экспортированном проекте этот метод всегда возвращает @GlobalScope.ERR_UNAVAILABLE.


Error compress_from_channels(mode: CompressMode, channels: UsedChannels, astc_format: ASTCFormat = 0) 🔗

Сжимает изображение в формате, сжатом с помощью видеопамяти VRAM, для экономии памяти. Не может напрямую получить доступ к данным пикселей во время сжатия изображения. Возвращает ошибку, если выбранный режим сжатия недоступен.

Это альтернатива методу compress(), позволяющая пользователю указать используемые каналы, чтобы компрессор мог выбрать наилучшие форматы DXT и ETC2. Для других форматов (не DXT или ETC2) этот аргумент игнорируется.

Параметр astc_format учитывается только при использовании сжатия ASTC; для всех остальных форматов он игнорируется.

Примечание: Метод compress_from_channels() поддерживается только в сборках редактора. При запуске в экспортированном проекте этот метод всегда возвращает @GlobalScope.ERR_UNAVAILABLE.


Dictionary compute_image_metrics(compared_image: Image, use_luma: bool) 🔗

Вычисляет метрики изображения для текущего изображения и сравниваемого изображения. Это можно использовать для расчета сходства между двумя изображениями.

Словарь содержит max, mean, mean_squared, root_mean_squared и peak_snr.


void convert(format: Format) 🔗

Преобразовать этот формат изображения в указанный format.


void copy_from(src: Image) 🔗

Копирует изображение src в это изображение.


Image create(width: int, height: int, use_mipmaps: bool, format: Format) static 🔗

Устарело: Use create_empty().

Создает пустое изображение заданного размера и формата. Если use_mipmaps равно true, генерирует мипмапы для этого изображения (см. generate_mipmaps()).


Image create_empty(width: int, height: int, use_mipmaps: bool, format: Format) static 🔗

Создает пустое изображение заданного размера и формата. Если use_mipmaps равно true, генерирует мипмапы для этого изображения (см. generate_mipmaps()).


Image create_from_data(width: int, height: int, use_mipmaps: bool, format: Format, data: PackedByteArray) static 🔗

Создает новое изображение указанного размера и формата. Заполняет изображение указанными необработанными данными. Если use_mipmaps равен true, загружает mip-карты для этого изображения из data. См. generate_mipmaps().


void crop(width: int, height: int) 🔗

Обрезает изображение до указанных width и height. Если указанный размер больше текущего размера, дополнительная область заполняется черными пикселями.


Error decompress() 🔗

Распаковывает изображение, если оно сжато в видеопамяти в поддерживаемом формате. Это увеличивает использование памяти, но позволяет изменять изображение. Возвращает @GlobalScope.OK, если формат поддерживается, в противном случае @GlobalScope.ERR_UNAVAILABLE. Все форматы, сжатые в видеопамяти и поддерживаемые Godot, могут быть распакованы этим методом, за исключением FORMAT_ETC2_R11S, FORMAT_ETC2_RG11S и FORMAT_ETC2_RGB8A1.


AlphaMode detect_alpha() const 🔗

Возвращает ALPHA_BLEND, если изображение имеет данные для альфа-значений. Возвращает ALPHA_BIT, если все альфа-значения хранятся в одном бите. Возвращает ALPHA_NONE, если данные для альфа-значений не найдены.


UsedChannels detect_used_channels(source: CompressSource = 0) const 🔗

Возвращает цветовые каналы, используемые этим изображением. Если изображение сжато, необходимо указать исходный source.


void fill(color: Color) 🔗

Заполняет изображение color.


void fill_rect(rect: Rect2i, color: Color) 🔗

Заполняет rect color.


void fix_alpha_edges() 🔗

Смешивает пиксели с низким альфа-каналом с соседними пикселями.


void flip_x() 🔗

Переворачивает изображение по горизонтали.


void flip_y() 🔗

Переворачивает изображение по вертикали.


Error generate_mipmaps(renormalize: bool = false) 🔗

Генерирует mip-карты для изображения. Mip-карты — это предварительно рассчитанные копии изображения с более низким разрешением, которые автоматически используются, если изображение необходимо уменьшить при рендеринге. Они помогают улучшить качество изображения и производительность при рендеринге. Этот метод возвращает ошибку, если изображение сжато, находится в пользовательском формате или если ширина/высота изображения равна 0. Включение renormalize при генерации mip-карт для текстур нормалей гарантирует, что все результирующие векторные значения будут нормализованы.

Можно проверить, есть ли у изображения mip-карты, вызвав has_mipmaps() или get_mipmap_count(). Вызов generate_mipmaps() для изображения, у которого уже есть mip-карты, заменит существующие mip-карты в изображении.


PackedByteArray get_data() const 🔗

Возвращает копию необработанных (raw) данных изображения.


int get_data_size() const 🔗

Возвращает размер (в байтах) необработанных данных изображения.


Format get_format() const 🔗

Возвращает формат этого изображения.


int get_height() const 🔗

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


int get_mipmap_count() const 🔗

Возвращает количество уровней mipmap или 0, если изображение не имеет mipmap. Самое большое изображение основного уровня не считается уровнем mipmap этим методом, поэтому, если вы хотите включить его, вы можете добавить 1 к этому количеству.


int get_mipmap_offset(mipmap: int) const 🔗

Возвращает смещение, где хранится MIP-карта изображения с индексом mipmap в словаре data.


Color get_pixel(x: int, y: int) const 🔗

Возвращает цвет пикселя в (x, y).

Это то же самое, что и get_pixelv(), но с двумя целочисленными аргументами вместо аргумента Vector2i.


Color get_pixelv(point: Vector2i) const 🔗

Возвращает цвет пикселя в point.

Это то же самое, что и get_pixel(), но с аргументом Vector2i вместо двух целочисленных аргументов.


Image get_region(region: Rect2i) const 🔗

Возвращает новое Image, являющееся копией области данного Image, указанной с помощью region.


Vector2i get_size() const 🔗

Возвращает размер изображения (ширину и высоту).


Rect2i get_used_rect() const 🔗

Возвращает Rect2i, охватывающий видимую часть изображения, считая каждый пиксель с ненулевым альфа-каналом видимым.


int get_width() const 🔗

Возвращает ширину изображения.


bool has_mipmaps() const 🔗

Возвращает true, если изображение сгенерировало MIP-текстуры.


bool is_compressed() const 🔗

Возвращает true, если изображение сжато.


bool is_empty() const 🔗

Возвращает true, если изображение не содержит данных.


bool is_invisible() const 🔗

Возвращает true, если все пиксели изображения имеют альфа-значение 0. Возвращает false, если хотя бы один пиксель имеет альфа-значение больше 0.


void linear_to_srgb() 🔗

Преобразует всё изображение из линейного кодирования в нелинейное кодирование sRGB с помощью таблицы соответствия. Работает только с изображениями в форматах FORMAT_RGB8 или FORMAT_RGBA8.


Error load(path: String) 🔗

Загружает изображение из файла path. См. Поддерживаемые форматы изображений для списка поддерживаемых форматов изображений и ограничений.

Предупреждение: Этот метод следует использовать только в редакторе или в случаях, когда вам нужно загрузить внешние изображения во время выполнения, например изображения, расположенные в каталоге user://, и он может не работать в экспортированных проектах.

См. также описание ImageTexture для примеров использования.


Error load_bmp_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла BMP.

Примечание: Модуль BMP Godot не поддерживает изображения с глубиной цвета 16 бит на пиксель. Поддерживаются только изображения с глубиной цвета 1 бит, 4 бит, 8 бит, 24 бит и 32 бита на пиксель.

Примечание: Этот метод доступен только в сборках движка с включенным модулем BMP. По умолчанию модуль BMP включен, но его можно отключить во время сборки с помощью параметра module_bmp_enabled=no в SCons.


Error load_dds_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла DDS.

Примечание: Этот метод доступен только в сборках движка с включенным модулем DDS. По умолчанию модуль DDS включен, но его можно отключить во время сборки с помощью параметра module_dds_enabled=no в SCons.


Error load_exr_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла OpenEXR.


Image load_from_file(path: String) static 🔗

Создает новое Image и загружает данные из указанного файла.


Error load_jpg_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла JPEG.


Error load_ktx_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла KTX. В отличие от большинства форматов изображений, KTX может хранить сжатые VRAM данные и встраивать mip-карты.

Примечание: Реализация libktx от Godot поддерживает только 2D-изображения. Кубические карты, массивы текстур и де-паддинг не поддерживаются.

Примечание: Этот метод доступен только в сборках движка с включенным модулем KTX. По умолчанию модуль KTX включен, но его можно отключить во время сборки с помощью параметра module_ktx_enabled=no в SCons.


Error load_png_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого PNG-файла.


Error load_svg_from_buffer(buffer: PackedByteArray, scale: float = 1.0) 🔗

Загружает изображение из двоичного содержимого UTF-8 несжатого SVG-файла (.svg).

Примечание: Будьте осторожны при использовании сжатых SVG-файлов (например, .svgz), их необходимо распаковать перед загрузкой.

Примечание: Этот метод доступен только в сборках движка с включенным модулем SVG. По умолчанию модуль SVG включен, но его можно отключить во время сборки с помощью параметра module_svg_enabled=no в SCons.


Error load_svg_from_string(svg_str: String, scale: float = 1.0) 🔗

Загружает изображение из строкового содержимого файла SVG (.svg).

Примечание: Этот метод доступен только в сборках движка с включенным модулем SVG. По умолчанию модуль SVG включен, но его можно отключить во время сборки с помощью параметра module_svg_enabled=no в SCons.


Error load_tga_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла TGA.

Примечание: Этот метод доступен только в сборках движка с включенным модулем TGA. По умолчанию модуль TGA включен, но его можно отключить во время сборки с помощью параметра module_tga_enabled=no в SCons.


Error load_webp_from_buffer(buffer: PackedByteArray) 🔗

Загружает изображение из двоичного содержимого файла WebP.


void normal_map_to_xy() 🔗

Преобразует данные изображения в координаты на 3D-плоскости. Используется, когда изображение представляет собой карту нормалей. Карта нормалей может добавить много деталей к 3D-поверхности без увеличения количества полигонов.


void premultiply_alpha() 🔗

Умножает значения цвета на значения альфа. Результирующие значения цвета для пикселя: (color * alpha)/256. См. также CanvasItemMaterial.blend_mode.


void resize(width: int, height: int, interpolation: Interpolation = 1) 🔗

Изменяет размер изображения до заданных width и height. Новые пиксели рассчитываются с использованием режима interpolation, определенного через константы Interpolation.


void resize_to_po2(square: bool = false, interpolation: Interpolation = 1) 🔗

Изменяет размер изображения до ближайшей степени 2 для ширины и высоты. Если square равен true, ширина и высота устанавливаются одинаковыми. Новые пиксели вычисляются с использованием режима interpolation, определенного через константы Interpolation.


Image rgbe_to_srgb() 🔗

Преобразует стандартное линейное изображение RGBE (Red Green Blue Exponent) в изображение, использующее нелинейное кодирование sRGB.


void rotate_90(direction: ClockDirection) 🔗

Поворачивает изображение в указанном direction на 90 градусов. Ширина и высота изображения должны быть больше 1. Если ширина и высота не равны, изображение будет изменено.


void rotate_180() 🔗

Поворачивает изображение на 180 градусов. Ширина и высота изображения должны быть больше 1.


Error save_dds(path: String) const 🔗

Сохраняет изображение как файл DDS (DirectDraw Surface) в path. DDS — это формат контейнера, который может хранить текстуры в различных форматах сжатия, таких как DXT1, DXT5 или BC7. Эта функция вернет @GlobalScope.ERR_UNAVAILABLE, если Godot был скомпилирован без модуля DDS.

Примечание: Модуль DDS может быть отключен в некоторых сборках, что означает, что save_dds() вернет @GlobalScope.ERR_UNAVAILABLE при вызове из экспортированного проекта.


PackedByteArray save_dds_to_buffer() const 🔗

Сохраняет изображение как файл DDS (DirectDraw Surface) в байтовый массив. DDS — это контейнерный формат, который может хранить текстуры в различных форматах сжатия, таких как DXT1, DXT5 или BC7. Эта функция вернет пустой байтовый массив, если Godot был скомпилирован без модуля DDS.

Примечание: Модуль DDS может быть отключен в некоторых сборках, что означает, что save_dds_to_buffer() вернет пустой байтовый массив при вызове из экспортированного проекта.


Error save_exr(path: String, grayscale: bool = false) const 🔗

Сохраняет изображение в файл EXR по адресу path. Если grayscale имеет значение true и изображение имеет только один канал, оно будет сохранено явно как монохромное, а не как изображение с одним красным каналом. Эта функция вернет @GlobalScope.ERR_UNAVAILABLE, если Godot был скомпилирован без модуля TinyEXR.


PackedByteArray save_exr_to_buffer(grayscale: bool = false) const 🔗

Сохраняет изображение в файл EXR в массив байтов. Если grayscale равно true и изображение имеет только один канал, оно будет сохранено явно как монохромное, а не как изображение с одним красным каналом. Эта функция вернет пустой массив байтов, если Godot был скомпилирован без модуля TinyEXR.


Error save_jpg(path: String, quality: float = 0.75) const 🔗

Сохраняет изображение как файл JPEG в path с указанным quality между 0.01 и 1.0 (включительно). Более высокие значения quality приводят к более качественному выводу за счет большего размера файла. Рекомендуемые значения quality находятся между 0.75 и 0.90. Даже при качестве 1.00 сжатие JPEG остается с потерями.

Примечание: JPEG не сохраняет альфа-канал. Если Image содержит альфа-канал, изображение все равно будет сохранено, но полученный файл JPEG не будет содержать альфа-канал.


PackedByteArray save_jpg_to_buffer(quality: float = 0.75) const 🔗

Сохраняет изображение как файл JPEG в байтовый массив с указанным quality между 0.01 и 1.0 (включительно). Более высокие значения quality приводят к более качественному выводу за счет большего размера байтового массива (и, следовательно, использования памяти). Рекомендуемые значения quality находятся между 0.75 и 0.90. Даже при качестве 1.00 сжатие JPEG остается потеряным.

Примечание: JPEG не сохраняет альфа-канал. Если Image содержит альфа-канал, изображение все равно будет сохранено, но полученный байтовый массив не будет содержать альфа-канал.


Error save_png(path: String) const 🔗

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


PackedByteArray save_png_to_buffer() const 🔗

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


Error save_webp(path: String, lossy: bool = false, quality: float = 0.75) const 🔗

Сохраняет изображение как файл WebP (Web Picture) в файле по адресу path. По умолчанию он сохраняет без потерь. Если lossy равно true, изображение будет сохранено с потерями, используя настройку quality между 0.0 и 1.0 (включительно). WebP без потерь обеспечивает более эффективное сжатие, чем PNG.

Примечание: Формат WebP ограничен размером 16383×16383 пикселей, тогда как PNG может сохранять изображения большего размера.


PackedByteArray save_webp_to_buffer(lossy: bool = false, quality: float = 0.75) const 🔗

Сохраняет изображение как файл WebP (Web Picture) в файле по адресу path. По умолчанию он сохраняется без потерь. Если lossy равно true, изображение будет сохранено с потерями, с использованием параметра paramquality между 0.0 и 1.0 (включительно). WebP без потерь обеспечивает более эффективное сжатие, чем PNG.

Примечание: Формат WebP ограничен размером 16383×16383 пикселей, тогда как PNG может сохранять изображение большего размера.


void set_data(width: int, height: int, use_mipmaps: bool, format: Format, data: PackedByteArray) 🔗

Перезаписывает данные существующего Image. Нестатический эквивалент create_from_data().


void set_pixel(x: int, y: int, color: Color) 🔗

Устанавливает цвет пикселя в точке (x, y) равным color.

var img_width = 10
var img_height = 5
var img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)

img.set_pixel(1, 2, Color.RED) # Устанавливает цвет в точке (1, 2) на красный.

Это аналогично методу set_pixelv, но с двумя целочисленными аргументами вместо аргумента Vector2i.

Примечание: В зависимости от формата изображения, заданный здесь цвет может быть ограничен или потерять точность. Не следует предполагать, что цвет, возвращаемый методом get_pixel(), идентичен цвету, заданному здесь; для любых сравнений, вероятно, потребуется использовать приближение, например, Color.is_equal_approx().

Примечание: В форматах изображений в оттенках серого используется только красный канал color (и альфа-канал, если применимо). Зеленый и синий каналы игнорируются.


void set_pixelv(point: Vector2i, color: Color) 🔗

Устанавливает цвет пикселя в точке point равным цвету пикселя в точке color.

var img_width = 10
var img_height = 5
var img = Image.create(img_width, img_height, false, Image.FORMAT_RGBA8)

img.set_pixelv(Vector2i(1, 2), Color.RED) # Устанавливает цвет в точке (1, 2) на красный.

Это то же самое, что и set_pixel(), но с аргументом Vector2i вместо двух целочисленных аргументов.

Примечание: В зависимости от формата изображения, заданный здесь цвет может быть ограничен или потерять точность. Не следует предполагать, что цвет, возвращаемый get_pixelv(), идентичен цвету, заданному здесь; для любых сравнений, вероятно, потребуется использовать приближение, например, Color.is_equal_approx().

Примечание: В форматах изображений в оттенках серого используется только красный канал color (и альфа-канал, если применимо). Зеленый и синий каналы игнорируются.


void shrink_x2() 🔗

Уменьшает изображение в 2 раза по каждой оси (делит количество пикселей на 4).


void srgb_to_linear() 🔗

Преобразует исходные данные из нелинейного кодирования sRGB в линейное кодирование с использованием таблицы соответствия. Работает только с изображениями в форматах FORMAT_RGB8 или FORMAT_RGBA8.

Примечание: 8-битные форматы, необходимые для этого метода, не подходят для хранения линейно закодированных значений; значительная часть цветовой информации будет потеряна в более темных значениях. Для сохранения качества изображения этот метод использовать не следует.