Image

继承: Resource < RefCounted < Object

图像数据类型。

描述

本机图像数据类型。包含可以转换为ImageTexture的图像数据,并提供常用的图像处理方法。Image的最大宽度和高度为MAX_WIDTHMAX_HEIGHT

Image不能直接分配给对象的纹理属性,必须先手动转换为ImageTexture

注意:由于图形硬件限制,最大图像大小为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)

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_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纹理格式具有两个值,亮度和alpha,每个值存储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位alpha和颜色数据与alpha预乘。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_DXT3 = 18

S3TC纹理格式使用块压缩2,颜色数据被解释为没有被alpha预乘。非常适合在半透明和不透明区域之间具有清晰alpha过渡的图像。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_DXT5 = 19

S3TC纹理格式也称为块压缩3或BC3,包含64位alpha通道数据,后跟64位DXT1编码的颜色数据。颜色数据不预先乘以alpha,与DXT3相同。与DXT3相比,DXT5通常对透明渐变产生更好的结果。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_RGTC_R = 20

使用红绿纹理压缩的纹理格式,使用DXT5用于alpha通道的相同压缩算法对红色通道数据进行规范化。

Format FORMAT_RGTC_RG = 21

使用红绿纹理压缩的纹理格式,使用DXT5用于alpha通道的相同压缩算法对红色和绿色通道数据进行规范化。

Format FORMAT_BPTC_RGBA = 22

使用BPTC压缩和无符号规范化RGBA组件的纹理格式。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_BPTC_RGBF = 23

使用带符号浮点RGB组件的BPTC压缩的纹理格式。

Format FORMAT_BPTC_RGBFU = 24

使用BPTC压缩和无符号浮点RGB组件的纹理格式。

Format FORMAT_ETC = 25

爱立信纹理压缩格式1,也称为“ETC1”,是OpenGL ES图形标准的一部分。这种格式不能存储alpha通道。

Format FORMAT_ETC2_R11 = 26

爱立信纹理压缩格式2R11_EAC变体),它提供了一个通道的无符号数据。

Format FORMAT_ETC2_R11S = 27

爱立信纹理压缩格式2SIGNED_R11_EAC变体),它提供了一个通道的签名数据。

Format FORMAT_ETC2_RG11 = 28

爱立信纹理压缩格式2RG11_EAC变体),它提供了两个通道的无符号数据。

Format FORMAT_ETC2_RG11S = 29

爱立信纹理压缩格式2SIGNED_RG11_EAC变体),它提供了两个通道的签名数据。

Format FORMAT_ETC2_RGB8 = 30

爱立信纹理压缩格式2RGB8变体),它是ETC1的后续,压缩RGB888数据。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_ETC2_RGBA8 = 31

爱立信纹理压缩格式2RGBA8变体),它以完全的alpha支持压缩RGBA8888数据。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_ETC2_RGB8A1 = 32

爱立信纹理压缩格式2RGB8_PUNCHTHROUGH_ALPHA1变体),它压缩RGBA数据以使alpha完全透明或完全不透明。

注意:创建ImageTexture时,会执行sRGB到线性颜色空间的转换。

Format FORMAT_ETC2_RA_AS_RG = 33

爱立信纹理压缩格式2RGBA8变体),它压缩RA数据并将其解释为两个通道(红色和绿色)。另见FORMAT_ETC2_RGBA8

Format FORMAT_DXT5_RA_AS_RG = 34

S3TC纹理格式也称为块压缩3或BC3,它压缩RA数据并将其解释为两个通道(红色和绿色)。另见FORMAT_DXT5

Format FORMAT_ASTC_4x4 = 35

自适应可缩放纹理压缩。这实现了4×4(高质量)模式。

Format FORMAT_ASTC_4x4_HDR = 36

FORMAT_ASTC_4x4相同的格式,但提示让GPU知道它用于HDR。

Format FORMAT_ASTC_8x8 = 37

自适应可缩放纹理压缩。这实现了8×8(低质量)模式。

Format FORMAT_ASTC_8x8_HDR = 38

FORMAT_ASTC_8x8相同的格式,但提示让GPU知道它用于HDR。

Format FORMAT_MAX = 39

表示Format枚举的大小。


enum Interpolation: 🔗

Interpolation INTERPOLATE_NEAREST = 0

执行最近邻插值。如果图像调整大小,它将被像素化。

Interpolation INTERPOLATE_BILINEAR = 1

执行双线性插值。如果调整图像大小,它将是模糊的。此模式比INTERPOLATE_CUBIC快,但会导致较低的质量。

Interpolation INTERPOLATE_CUBIC = 2

执行三次插值。如果调整图像大小,它会模糊。与INTERPOLATE_BILINEAR相比,这种模式通常会给出更好的结果,代价是速度较慢。

Interpolation INTERPOLATE_TRILINEAR = 3

分别在两个最适合的mipmap级别上执行双线性,然后在它们之间进行线性插值。

它比INTERPOLATE_BILINEAR慢,但产生更高质量的结果,混淆现象少得多。

如果图像没有mipmap,它们将在内部生成和使用,但不会在生成的图像上生成mipmap。

注意:如果您打算缩放原始图像的多个副本,最好提前调用generate_mipmaps()],以避免在一次又一次地生成它们时浪费处理能力。

另一方面,如果图像已经有mipmap,它们将被使用,并且将为生成的图像生成一个新的集合。

Interpolation INTERPOLATE_LANCZOS = 4

执行Lanczos插值。这是最慢的图像大小调整模式,但它通常会提供最佳结果,尤其是在缩小图像时。


enum AlphaMode: 🔗

AlphaMode ALPHA_NONE = 0

图像没有alpha。

AlphaMode ALPHA_BIT = 1

Image将alpha存储在单个位中。

AlphaMode ALPHA_BLEND = 2

图像使用alpha。


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

该图像分别使用亮度和alpha两个通道。

UsedChannels USED_CHANNELS_R = 2

图像仅使用红色通道。

UsedChannels USED_CHANNELS_RG = 3

该图像使用红色和绿色两个通道。

UsedChannels USED_CHANNELS_RGB = 4

该图像使用红色、绿色和蓝色三个通道。

UsedChannels USED_CHANNELS_RGBA = 5

该图像使用四个通道来表示红色、绿色、蓝色和alpha。


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

提示应使用低质量的8×8 ASTC压缩格式。


常量

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) 🔗

根据给定值调整此图像的brightnesscontrastsaturation。如果图像被压缩,则不起作用(参见is_compressed())。


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

Alpha混合src_rectsrc图像到坐标dst处的此图像,相应地裁剪到两个图像边界。此图像和src图像必须具有相同的格式。具有非正大小的src_rect被视为空。


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

Alpha混合src_rectsrc图像到此图像,使用坐标dst处的mask图像,相应地裁剪到两个图像边界。srcmask都需要Alpha通道。如果相应掩码像素的alpha值不为0,则dst像素和src像素将混合。此图像和src图像必须具有相同的格式。src图像和mask图像必须具有相同的大小(宽度和高度),但它们可以具有不同的格式。具有非正大小的src_rect被视为空。


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

src_rectsrc图像复制到坐标dst处的此图像,相应地裁剪到两个图像边界。此图像和src图像必须具有相同的格式。具有非正大小的src_rect被视为空。

注意:src中的alpha通道数据将覆盖此图像中目标位置的相应数据。要混合alpha通道,请改用blend_rect()


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

Blitssrc_rect区域从src图像到dst给出的坐标处的此图像,相应地裁剪到两个图像边界。如果相应的mask像素的alpha值不是0,则将src像素复制到dst上。此图像和src图像必须具有相同的格式。src图像和mask图像必须具有相同的大小(宽度和高度),但它们可以具有不同的格式。具有非正大小的src_rect被视为空。


void bump_map_to_normal_map(bump_scale: float = 1.0) 🔗

将凹凸贴图转换为法线贴图。凹凸贴图提供每个像素的高度偏移,而法线贴图提供每个像素的法线方向。


void clear_mipmaps() 🔗

删除图像的mipmap。


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

压缩图像以使用更少的内存。压缩图像时无法直接访问像素数据。如果选择的压缩模式不可用,则返回错误。

source参数有助于为DXT和ETC2格式选择最佳压缩方法。对于ASTC压缩,它被忽略。

对于ASTC压缩,必须提供astc_format参数。


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

压缩图像以使用更少的内存。压缩图像时无法直接访问像素数据。如果选择的压缩模式不可用,则返回错误。

这是compress()的替代方案,它允许用户提供用于压缩器选择最佳DXT和ETC2格式的通道。对于其他格式(非DXT或ETC2),此参数将被忽略。

对于ASTC压缩,必须提供astc_format参数。


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

计算当前图像和比较图像的图像度量。

字典包含max的意思mean_squaredroot_mean_squaredpeak_snr


void convert(format: Format) 🔗

转换图像的格式。请参阅Format常量。


void copy_from(src: Image) 🔗

src图像复制到此图像。


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

已弃用: 使用 create_empty()

创建给定大小和格式的空图像。请参阅Format常量。如果use_mipmapstrue,则为该图像生成mipmap。请参阅generate_mipmaps()


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

创建给定大小和格式的空图像。请参阅Format常量。如果use_mipmapstrue,则为该图像生成mipmap。请参阅generate_mipmaps()


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

创建给定大小和格式的新图像。参见Format常量。用给定的原始数据填充图像。如果use_mipmapstrue,则从data加载此图像的mipmap。参见generate_mipmaps()


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

将图像裁剪为给定的widthheight。如果指定的大小大于当前大小,则额外的区域将填充黑色像素。


Error decompress() 🔗

如果图像以支持的格式进行VRAM压缩,则将其解压缩。如果支持该格式,则返回@GlobalScope.OK,否则返回@GlobalScope.ERR_UNAVAILABLE

注意:可以解压缩以下格式:DXT、RGTC、BPTC。不支持格式ETC1和ETC2。


AlphaMode detect_alpha() const 🔗

如果图像具有alpha值的数据,则返回ALPHA_BLEND。如果所有alpha值都存储在一个位中,则返回ALPHA_BIT。如果未找到alpha值的数据,则返回ALPHA_NONE


UsedChannels detect_used_channels(source: CompressSource = 0) const 🔗

返回此图像使用的颜色通道,作为UsedChannels常量之一。如果图像被压缩,则必须指定原始source


void fill(color: Color) 🔗

color填充图像。


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

color填充rect


void fix_alpha_edges() 🔗

混合低alpha像素与附近的像素。


void flip_x() 🔗

水平翻转图像。


void flip_y() 🔗

垂直翻转图像。


Error generate_mipmaps(renormalize: bool = false) 🔗

为图像生成mipmap。mipmap是图像的预计算的低分辨率副本,如果图像在渲染时需要缩小,会自动使用这些副本。它们有助于提高渲染时的画质和性能。如果图像以自定义格式压缩,或者图像的宽度/高度为0,此方法将返回错误。为普通贴图纹理生成mipmap时启用renormalize将确保所有生成的向量值都被归一化。

可以通过调用has_mipmaps()get_mipmap_count()来检查图像是否有mipmap。对已经有mipmap的图像调用generate_mipmaps()将替换图像中现有的mipmap。


PackedByteArray get_data() const 🔗

返回图像原始数据的副本。


int get_data_size() const 🔗

返回图像原始数据的大小(以字节为单位)。


Format get_format() const 🔗

返回图像的格式。请参阅Format常量。


int get_height() const 🔗

返回图像的高度。


int get_mipmap_count() const 🔗

返回mipmap级别的数量,如果图像没有mipmap,则返回0。通过此方法,最大的主级别图像不计为mipmap级别,因此如果您想包含它,您可以在此计数中添加1。


int get_mipmap_offset(mipmap: int) const 🔗

返回带有索引mipmap的图像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,将具有非零Alpha通道的每个像素视为可见。


int get_width() const 🔗

返回图像的宽度。


bool has_mipmaps() const 🔗

如果图像已生成mipmap,则返回true


bool is_compressed() const 🔗

如果图像被压缩,则返回true


bool is_empty() const 🔗

如果图像没有数据,则返回true


bool is_invisible() const 🔗

如果所有图像的像素的alpha值为0,则返回true。如果任何像素的alpha值高于0,则返回false


void linear_to_srgb() 🔗

将整个图像从线性色彩空间转换为sRGB色彩空间。仅适用于FORMAT_RGB8FORMAT_RGBA8格式的图像。


Error load(path: String) 🔗

从文件path加载图像。有关支持的图像格式和限制的列表,请参见支持的图像格式

警告:此方法应仅在编辑器中使用或在运行时需要加载外部图像的情况下使用,例如位于user://目录中的图像,并且可能不适用于导出的项目。

有关使用示例,请参阅ImageTexture描述。


Error load_bmp_from_buffer(buffer: PackedByteArray) 🔗

从BMP文件的二进制内容加载图像。

注意:i3D的BMP模块不支持每像素16位图像。仅支持每像素1位、4位、8位、24位和32位图像。

注意:此方法仅在启用BMP模块的引擎构建中可用。默认情况下,BMP模块已启用,但可以在构建时使用module_bmp_enabled=noSCons选项禁用它。


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压缩数据并嵌入mipmap。

注意:i3D的libktx实现仅支持2D图像。不支持立方体贴图、纹理数组和去填充。

注意:此方法仅在启用了KTX模块的引擎构建中可用。默认情况下,KTX模块已启用,但可以在构建时使用module_ktx_enabled=noSCons选项禁用它。


Error load_png_from_buffer(buffer: PackedByteArray) 🔗

从PNG文件的二进制内容加载图像。


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

未压缩SVG文件(. svg)的UTF-8二进制内容加载图像。

注意:使用压缩的SVG文件(如. svgz)时请注意,它们需要在加载前解压缩

注意:此方法仅在启用了SVG模块的引擎构建中可用。默认情况下,SVG模块已启用,但可以在构建时使用module_svg_enabled=noSCons选项禁用它。


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

从SVG文件(. svg)的字符串内容加载图像。

注意:此方法仅在启用了SVG模块的引擎构建中可用。默认情况下,SVG模块已启用,但可以在构建时使用module_svg_enabled=noSCons选项禁用它。


Error load_tga_from_buffer(buffer: PackedByteArray) 🔗

从TGA文件的二进制内容加载图像。

注意:此方法仅在启用TGA模块的引擎构建中可用。默认情况下,TGA模块已启用,但可以在构建时使用module_tga_enabled=noSCons选项禁用它。


Error load_webp_from_buffer(buffer: PackedByteArray) 🔗

从WebP文件的二进制内容加载图像。


void normal_map_to_xy() 🔗

转换图像数据以表示3D平面上的坐标。当图像表示法线贴图时使用此选项。法线贴图可以在不增加多边形计数的情况下向3D表面添加大量细节。


void premultiply_alpha() 🔗

将颜色值与alpha值相乘。像素的结果颜色值为(color*alpha)/256。另见CanvasItemMaterial.blend_mode


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

将图像调整为给定的widthheight。使用通过Interpolation常量定义的interpolation模式计算新像素。


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

将图像的宽度和高度调整为最接近的2次方。如果squaretrue,则将宽度和高度设置为相同。使用通过Interpolation常量定义的interpolation模式计算新像素。


Image rgbe_to_srgb() 🔗

将标准RGBE(红绿蓝指数)图像转换为sRGB图像。


void rotate_90(direction: ClockDirection) 🔗

将图像在指定的direction旋转90度。图像的宽度和高度必须大于1。如果宽度和高度不相等,图像将被调整大小。


void rotate_180() 🔗

将图像旋转180度。图像的宽度和高度必须大于1


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

将图像作为EXR文件保存到path。如果grayscaletrue并且图像只有一个通道,则将显式保存为单色而不是一个红色通道。如果i3D在没有TinyEXR模块的情况下编译,此函数将返回@GlobalScope.ERR_UNAVAILABLE

注意:TinyEXR模块在非编辑器构建中被禁用,这意味着save_exr()在从导出的项目调用时将返回@GlobalScope.ERR_UNAVAILABLE


PackedByteArray save_exr_to_buffer(grayscale: bool = false) const 🔗

将图像作为EXR文件保存到字节数组中。如果grayscaletrue并且图像只有一个通道,则将显式保存为单色而不是一个红色通道。如果i3D在没有TinyEXR模块的情况下编译,此函数将返回一个空字节数组。

注意:TinyEXR模块在非编辑器构建中被禁用,这意味着save_exr()将在从导出项目调用时返回一个空字节数组。


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

将图像作为JPEG文件保存到path,指定的quality介于0.011.0(含)之间。更高的quality值以更大的文件大小为代价导致更好看的输出。推荐的quality值在0.750.90之间。即使在质量1.00下,JPEG压缩仍然是有损的。

注意:JPEG不保存alpha通道。如果Image包含alpha通道,图像仍将被保存,但生成的JPEG文件将不包含alpha通道。


PackedByteArray save_jpg_to_buffer(quality: float = 0.75) const 🔗

将图像作为JPEG文件保存到指定的quality介于0.011.0(含)之间的字节数组中。更高的quality值会以更大的字节数组大小(因此会占用内存)为代价带来更好看的输出。推荐的quality值介于0.750.90之间。即使在质量1.00时,JPEG压缩仍然是有损的。

注意:JPEG不保存alpha通道。如果Image包含alpha通道,图像仍将被保存,但生成的字节数组将不包含alpha通道。


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图片)文件保存到path处的文件中。默认情况下,它将无损保存。如果lossytrue,则使用0.01.0(包括)之间的quality设置,图像将有损保存。无损WebP提供比PNG更有效的压缩。

注意:WebP格式限制为16383×16383像素,而PNG可以保存更大的图像。


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

将图像作为WebP(Web图片)文件保存到字节数组中。默认情况下,它将无损保存。如果lossytrue,则图像将有损保存,使用0.01.0(包括)之间的quality设置。无损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设置为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) # Sets the color at (1, 2) to red.

这与set_pixelv()相同,但使用两个整数参数而不是一个Vector2i参数。


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

point处的像素的Color设置为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) # Sets the color at (1, 2) to red.

这与set_pixel()相同,但使用一个Vector2i参数而不是两个整数参数。


void shrink_x2() 🔗

在每个轴上将图像缩小2倍(这将像素计数除以4)。


void srgb_to_linear() 🔗

将sRGB色彩空间的原始数据转换为线性比例。仅适用于FORMAT_RGB8FORMAT_RGBA8格式的图像。