查看源代码 wxImage (wx v2.4.3)
这个类封装了一个平台无关的图像。
图像可以从数据创建,或者使用 wxBitmap:convertToImage/1
。图像可以从各种格式的文件加载,并且可以通过图像格式处理程序扩展到新的格式。可以使用函数来设置和获取图像位,因此它可以用于基本的图像操作。
wxImage
不能(目前)直接绘制到 wxDC
。相反,必须使用 wxBitmap::wxBitmap(wxImage,int depth) 构造函数从中创建一个特定于平台的 wxBitmap
对象。然后可以使用 wxDC:drawBitmap/4
将此位图绘制在设备上下文中。
更多关于 wxImage
和 wxBitmap
之间的区别:wxImage
只是一个 RGB 字节缓冲区,带有一个可选的 alpha 字节缓冲区。它是通用的、平台无关的,并且与图像文件格式无关的代码。它包括用于缩放、调整大小、裁剪和其他图像数据操作的通用代码。另一方面,wxBitmap
旨在成为任何本机图像格式的包装器,该格式最快/最容易绘制到 DC 或成为在 wxMemoryDC
上执行的绘图操作的目标。通过像这样分割 wxImage/wxBitmap 之间的职责,可以更容易地使用所有平台和图像类型共享的通用代码进行通用操作,并在需要性能或兼容性的地方使用特定于平台的代码。
图像的一个颜色值可以用作掩码颜色,这将导致自动创建一个与位图对象关联的 wxMask
对象。
Alpha 通道支持
从 wxWidgets 2.5.0 开始,wxImage
支持 alpha 通道数据,也就是说,除了每个像素的红色、绿色和蓝色颜色分量的字节外,它还存储一个表示像素不透明度的字节。
alpha 值为 0 对应于透明像素(零不透明度),而值 255 表示像素是 100% 不透明的。常量 ?wxIMAGE_ALPHA_TRANSPARENT 和 ?wxIMAGE_ALPHA_OPAQUE 可以用来以更易读的形式表示这些值。
虽然所有图像都有 RGB 数据,但并非所有图像都有 alpha 通道。在使用 getAlpha/3
之前,您应该使用 hasAlpha/1
检查此图像是否包含 alpha 通道。目前,BMP、PNG、TGA 和 TIFF 格式处理程序完全支持加载 alpha 通道,因此如果要使用 alpha,则必须使用这些格式之一。如果您使用 setAlpha/4
自己初始化图像 alpha 通道,则应将其保存为 PNG、TGA 或 TIFF 格式,以避免丢失它,因为这些是目前唯一支持使用 alpha 保存的处理程序。
可用的图像处理程序
以下图像处理程序可用。wxBMPHandler 始终默认安装。要使用其他图像格式,请使用 wxImage::AddHandler
安装适当的处理程序(在 wx 中未实现),或调用 ?wxInitAllImageHandlers()。
wxBMPHandler:用于加载(包括 alpha 支持)和保存,始终安装。
wxPNGHandler
(在 wx 中未实现):用于加载和保存。包括 alpha 支持。wxJPEGHandler
(在 wx 中未实现):用于加载和保存。wxGIFHandler
(在 wx 中未实现):用于加载和保存(见下文)。wxPCXHandler
(在 wx 中未实现):用于加载和保存(见下文)。wxPNMHandler
(在 wx 中未实现):用于加载和保存(见下文)。wxTIFFHandler
(在 wx 中未实现):用于加载和保存。包括 alpha 支持。wxTGAHandler
(在 wx 中未实现):用于加载和保存。包括 alpha 支持。wxIFFHandler
(在 wx 中未实现):仅用于加载。wxXPMHandler
(在 wx 中未实现):用于加载和保存。wxICOHandler:用于加载和保存。
wxCURHandler:用于加载和保存。
wxANIHandler:仅用于加载。
以 PCX 格式保存时,wxPCXHandler
(在 wx 中未实现)将计算图像中不同颜色的数量;如果有 256 种或更少的颜色,它将保存为 8 位,否则它将保存为 24 位。
加载 PNM 仅适用于 ASCII 或原始 RGB 图像。以 PNM 格式保存时,wxPNMHandler
(在 wx 中未实现)将始终保存为原始 RGB。
保存 GIF 需要最大 8 bpp 的图像(参见 wxQuantize
(在 wx 中未实现)),并且 alpha 通道转换为掩码(参见 convertAlphaToMask/5
)。保存动画 GIF 需要相同大小的图像(参见 wxGIFHandler::SaveAnimation
(在 wx 中未实现))
预定义对象(包括 wx.hrl):?wxNullImage
参见
?wxInitAllImageHandlers()
wxWidgets 文档:wxImage
概要
函数
通过指定的像素 blurRadius
在水平和垂直方向上模糊图像。
仅在水平方向上模糊图像。
仅在垂直方向上模糊图像。
如果图像具有 alpha 通道,则此方法将其转换为掩码。
如果图像具有 alpha 通道,则此方法使用指定的颜色作为掩码颜色将其转换为掩码。
返回图像的灰度版本。
返回图像的单色版本。
返回此图像的相同副本。
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
创建一个新的图像。
销毁图像数据。
销毁对象
查找图像中从未使用过的第一种颜色。
返回指向存储此图像的 alpha 值的数组的指针。
返回给定像素位置的 alpha 值。
返回给定坐标处的蓝色强度。
将图像数据作为数组返回。
返回给定坐标处的绿色强度。
获取图像的高度(以像素为单位)。
如果图像文件包含多个图像,并且图像处理程序能够单独检索这些图像,则此函数将返回可用图像的数量。
迭代所有已注册的 wxImageHandler
对象(在 wx 中未实现),并返回一个包含文件扩展名掩码的字符串,该字符串适用于传递给文件打开/保存对话框。
获取掩码颜色的蓝色值。
获取掩码颜色的绿色值。
获取掩码颜色的红色值。
获取用户定义的字符串值选项。
获取用户定义的整数值选项。
获取当前掩码颜色或查找可以用作掩码颜色的合适的未使用颜色。
返回与图像关联的调色板。
返回给定坐标处的红色强度。
只要矩形完全属于图像,则返回当前图像的子图像。
获取图像的宽度(以像素为单位)。
如果此图像具有 alpha 通道,则返回 true,否则返回 false。
如果存在活动的掩码,则返回 true,否则返回 false。
如果存在给定选项,则返回 true。
初始化图像 alpha 通道数据。
仅供内部使用。
如果存在图像数据,则返回 true。
如果给定像素是透明的,则返回 true。即,如果此图像有遮罩,则该像素具有遮罩颜色;或者,如果此图像有 Alpha 通道,且此像素的 Alpha 值严格小于 threshold
,则返回 true。
从文件加载图像。
从文件加载图像。
返回图像的镜像副本。
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
从内存中的数据创建图像。
查找具有给定名称的处理程序,并将其删除。
将由 r1
,g1,b1 指定的颜色替换为颜色 r2
,g2,b2。
通过缩放来就地更改图像的大小:调用此函数后,图像将具有给定的宽度和高度。
通过添加具有给定颜色的边框或根据需要裁剪,就地更改图像的大小,而不进行缩放。
返回图像的副本,该副本按照 clockwise
指示的方向旋转了 90 度。
将图像围绕给定点旋转 angle
弧度。
将图像中每个像素的色调旋转 angle
,该值是一个介于 -1.0 到 +1.0 之间的双精度浮点数,其中 -1.0 对应于 -360 度,+1.0 对应于 +360 度。
将图像保存在指定的文件中。
将图像保存在指定的文件中。
返回图像的缩放版本。
此函数类似于 setData/4
并且具有类似的限制。
设置给定像素的 Alpha 值。
设置图像数据,而不执行检查。
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
指定是否存在遮罩。
为此图像设置遮罩颜色(并告诉图像使用遮罩)。
设置图像的遮罩,以便在遮罩中具有 mr,mg,mb RGB 值的像素将在图像中被遮罩。
设置用户定义的选项。
将调色板与图像关联。
设置给定矩形内像素的颜色。
设置给定 x 和 y 坐标处的像素颜色。
返回此图像的调整大小的版本,而不进行缩放,方法是添加具有给定颜色的边框或根据需要进行裁剪。
类型
-type wxImage() :: wx:wx_object().
函数
通过指定的像素 blurRadius
在水平和垂直方向上模糊图像。
当使用单个遮罩颜色进行透明处理时,不应使用此方法。
参见
-spec blurHorizontal(This, BlurRadius) -> wxImage() when This :: wxImage(), BlurRadius :: integer().
仅在水平方向上模糊图像。
当使用单个遮罩颜色进行透明处理时,不应使用此方法。
参见
仅在垂直方向上模糊图像。
当使用单个遮罩颜色进行透明处理时,不应使用此方法。
参见
-spec convertAlphaToMask(This, [Option]) -> boolean() when This :: wxImage(), Option :: {threshold, integer()}.
如果图像具有 alpha 通道,则此方法将其转换为掩码。
如果图像具有 Alpha 通道,则所有 Alpha 值小于 threshold
的像素都将被替换为遮罩颜色,并且 Alpha 通道将被删除。否则,不执行任何操作。
遮罩颜色使用 findFirstUnusedColour/2
自动选择,如果这不合适,请参阅下面的重载。
返回:成功时返回 true,错误时返回 false。
-spec convertAlphaToMask(This, Mr, Mg, Mb, [Option]) -> boolean() when This :: wxImage(), Mr :: integer(), Mg :: integer(), Mb :: integer(), Option :: {threshold, integer()}.
如果图像具有 alpha 通道,则此方法使用指定的颜色作为掩码颜色将其转换为掩码。
如果图像具有 Alpha 通道,则所有 Alpha 值小于 threshold
的像素都将被替换为遮罩颜色,并且 Alpha 通道将被删除。否则,不执行任何操作。
自从:2.9.0
返回:成功时返回 true,错误时返回 false。
返回图像的灰度版本。
自从:2.9.0
-spec convertToGreyscale(This, Weight_r, Weight_g, Weight_b) -> wxImage() when This :: wxImage(), Weight_r :: number(), Weight_g :: number(), Weight_b :: number().
返回图像的灰度版本。
返回的图像使用原始图像的亮度分量来计算灰度。默认情况下,在转换为 YUV 时使用标准 ITU-T BT.601,其中每个像素等于 (R weight_r
) + (G weight_g
) + (B * weight_b
)。
-spec convertToMono(This, R, G, B) -> wxImage() when This :: wxImage(), R :: integer(), G :: integer(), B :: integer().
返回图像的单色版本。
返回的图像在原始图像具有 (r,g,b) 颜色的位置具有白色,在其他所有位置具有黑色。
返回此图像的相同副本。
等效于 create(This, Sz, [])
。
-spec create(This, Width, Height) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(); (This, Sz, Data) -> boolean() when This :: wxImage(), Sz :: {W :: integer(), H :: integer()}, Data :: binary(); (This, Sz, [Option]) -> boolean() when This :: wxImage(), Sz :: {W :: integer(), H :: integer()}, Option :: {clear, boolean()}.
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
-spec create(This, Width, Height, Data) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(), Data :: binary(); (This, Width, Height, [Option]) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(), Option :: {clear, boolean()}; (This, Sz, Data, Alpha) -> boolean() when This :: wxImage(), Sz :: {W :: integer(), H :: integer()}, Data :: binary(), Alpha :: binary().
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
-spec create(This, Width, Height, Data, Alpha) -> boolean() when This :: wxImage(), Width :: integer(), Height :: integer(), Data :: binary(), Alpha :: binary().
创建一个新的图像。
有关更多信息,请参阅 new/4
。
返回:如果调用成功,则返回 true,否则返回 false。
-spec 'Destroy'(This) -> ok when This :: wxImage().
销毁图像数据。
-spec destroy(This :: wxImage()) -> ok.
销毁对象
-spec findFirstUnusedColour(This, [Option]) -> Result when Result :: {Res :: boolean(), R :: integer(), G :: integer(), B :: integer()}, This :: wxImage(), Option :: {startR, integer()} | {startG, integer()} | {startB, integer()}.
查找图像中从未使用过的第一种颜色。
搜索从给定的初始颜色开始,并继续以 1 为增量增加 R、G 和 B 分量(按此顺序),直到找到未使用的颜色或颜色空间耗尽。
参数 r
、g
、b
是用于保存颜色的变量的指针。
参数 startR
、startG
、startB
定义颜色的初始值。返回的颜色将具有等于或大于这些值的 RGB 值。
返回:如果没有剩余未使用的颜色,则返回 false,成功时返回 true。
注意:此方法涉及计算直方图,这是一个计算密集型操作。
返回指向存储此图像的 alpha 值的数组的指针。
对于没有 Alpha 通道的图像,此指针为 NULL。如果图像确实有 Alpha 通道,则可以使用此指针直接操作存储为 RGB 值的 Alpha 值。
返回给定像素位置的 alpha 值。
返回给定坐标处的蓝色强度。
将图像数据作为数组返回。
这最常用于进行直接图像操作。返回值指向一个字符数组,其格式为 RGBRGBRGB...,顺序为从上到下、从左到右,即第一个 RGB 三元组对应于第一行的第一个像素,第二个三元组对应于第一行的第二个像素,依此类推,直到第一行结束,然后是第二行,依此类推。
您不应删除返回的指针,也不应将其传递给 setData/4
。
返回给定坐标处的绿色强度。
获取图像的高度(以像素为单位)。
参见:getWidth/1
-spec getImageCount(Filename) -> integer() when Filename :: unicode:chardata().
-spec getImageCount(Filename, [Option]) -> integer() when Filename :: unicode:chardata(), Option :: {type, wx:wx_enum()}.
如果图像文件包含多个图像,并且图像处理程序能够单独检索这些图像,则此函数将返回可用图像的数量。
对于采用参数 filename
的重载,它是要查询的文件的名称。对于采用参数 stream
的重载,它是包含图像数据的已打开的输入流。
有关更多信息,请参阅 wxImageHandler::GetImageCount()
(在 wx 中未实现)。
参数 type
可以是以下值之一
wxBITMAP_TYPE_BMP:加载 Windows 位图文件。
wxBITMAP_TYPE_GIF:加载 GIF 位图文件。
wxBITMAP_TYPE_JPEG:加载 JPEG 位图文件。
wxBITMAP_TYPE_PNG:加载 PNG 位图文件。
wxBITMAP_TYPE_PCX:加载 PCX 位图文件。
wxBITMAP_TYPE_PNM:加载 PNM 位图文件。
wxBITMAP_TYPE_TIFF:加载 TIFF 位图文件。
wxBITMAP_TYPE_TGA:加载 TGA 位图文件。
wxBITMAP_TYPE_XPM:加载 XPM 位图文件。
wxBITMAP_TYPE_ICO:加载 Windows 图标文件 (ICO)。
wxBITMAP_TYPE_CUR:加载 Windows 光标文件 (CUR)。
wxBITMAP_TYPE_ANI:加载 Windows 动画光标文件 (ANI)。
wxBITMAP_TYPE_ANY:将尝试自动检测格式。
返回:可用图像的数量。对于大多数图像处理程序,此值为 1(例外情况是 TIFF 和 ICO 格式以及动画 GIF,对于这些格式,此函数返回动画中的帧数)。
-spec getImageExtWildcard() -> unicode:charlist().
迭代所有已注册的 wxImageHandler
对象(在 wx 中未实现),并返回一个包含文件扩展名掩码的字符串,该字符串适用于传递给文件打开/保存对话框。
返回:返回的字符串的格式为 "(*.ext1;*.ext2)|*.ext1;*.ext2"
。通常,最好在将结果传递给对话框之前添加描述。示例
获取掩码颜色的蓝色值。
获取掩码颜色的绿色值。
获取掩码颜色的红色值。
-spec getOption(This, Name) -> unicode:charlist() when This :: wxImage(), Name :: unicode:chardata().
获取用户定义的字符串值选项。
通用选项
wxIMAGE_OPTION_FILENAME:
从中加载图像的文件名。
wxGIFHandler
特定的选项(在 wx 中未实现)
wxIMAGE_OPTION_GIF_COMMENT:
从 GIF 文件读取或写入的注释文本。在动画 GIF 中,每一帧都可以有自己的注释。如果 GIF 的第一帧中只有注释,则不会在其他帧中重复。
返回:选项的值,如果未找到,则返回空字符串。如果空字符串可以是有效的选项值,请使用 hasOption/2
。
参见
-spec getOptionInt(This, Name) -> integer() when This :: wxImage(), Name :: unicode:chardata().
获取用户定义的整数值选项。
该函数对 name
不区分大小写。如果不存在给定的选项,则函数返回 0。如果 0 可能是该选项的有效值,请使用 hasOption/2
。
通用选项
wxIMAGE_OPTION_MAX_WIDTH
和wxIMAGE_OPTION_MAX_HEIGHT:
如果指定了这两个选项中的任何一个,则加载的图像将缩小(保留其纵横比),使其宽度小于给定的最大宽度(如果不为 0)并且
其高度小于给定的最大高度(如果不为 0)。这通常用于加载缩略图,并且与在加载后调用rescale/4
相比,使用这些选项的优势在于,某些处理程序(目前只有 JPEG 处理程序)支持在加载期间调整图像大小,这比加载整个巨大图像并在以后调整其大小效率更高(如果处理程序不支持这些选项,但这仍然会发生)。这些选项必须在调用loadFile/4
之前设置才能生效。wxIMAGE_OPTION_ORIGINAL_WIDTH
和wxIMAGE_OPTION_ORIGINAL_HEIGHT:
如果指定了wxIMAGE_OPTION_MAX_WIDTH
或wxIMAGE_OPTION_MAX_HEIGHT
中的任何一个,则这些选项将返回图像的原始大小。
自从:2.9.3
wxIMAGE_OPTION_QUALITY:
保存时使用的 JPEG 质量。这是一个介于 0..100 之间的整数,其中 0 表示非常差,100 表示优秀(但压缩非常严重)。目前,此选项对于其他格式被忽略。wxIMAGE_OPTION_RESOLUTIONUNIT:
此选项的值确定图像的分辨率是以厘米还是英寸为单位指定,请参阅 wxImageResolution 枚举元素。wxIMAGE_OPTION_RESOLUTION
、wxIMAGE_OPTION_RESOLUTIONX
和wxIMAGE_OPTION_RESOLUTIONY:
这些选项在与wxIMAGE_OPTION_RESOLUTIONUNIT
选项值对应的单位中定义图像的分辨率。可以在保存图像之前设置第一个选项,以将水平和垂直分辨率都设置为相同的值。如果图像处理程序支持图像分辨率(目前 BMP、JPEG 和 TIFF 处理程序支持),并且图像提供分辨率信息,则 X 和 Y 选项由图像处理程序设置,并且可以在加载图像后进行查询。
wxPNGHandler
特定的选项(在 wx 中未实现)
wxIMAGE_OPTION_PNG_FORMAT:
用于保存 PNG 文件的格式,有关支持的值,请参阅 wxImagePNGType。wxIMAGE_OPTION_PNG_BITDEPTH:
每个通道 (R/G/B/A) 的位深度。wxIMAGE_OPTION_PNG_FILTER:
用于保存 PNG 文件的过滤器,有关可能的值,请参阅 libpng (http://www.libpng.org/pub/png/libpng-1.2.5-manual.html) (例如,PNG_FILTER_NONE、PNG_FILTER_SUB、PNG_FILTER_UP 等)。wxIMAGE_OPTION_PNG_COMPRESSION_LEVEL:
保存 PNG 文件时的压缩级别 (0..9)。较高的值会创建更小但速度较慢的 PNG 文件。请注意,与其他格式(例如 JPEG)不同,PNG 格式始终是无损的,因此此压缩级别不会降低图像质量。wxIMAGE_OPTION_PNG_COMPRESSION_MEM_LEVEL:
保存 PNG 文件时的压缩内存使用级别 (1..9)。较高的值意味着保存过程会消耗更多内存,但可能会创建更小的 PNG 文件。wxIMAGE_OPTION_PNG_COMPRESSION_STRATEGY:
可能的值为 0(默认策略)、1(过滤)和 2(仅限 Huffman)。您可以使用 OptiPNG (http://optipng.sourceforge.net/) 为您的应用程序获取合适的值。wxIMAGE_OPTION_PNG_COMPRESSION_BUFFER_SIZE:
保存 PNG 文件时的内部缓冲区大小(以字节为单位)。理想情况下,它应该与生成的 PNG 文件一样大。如果您的应用程序生成的图像大小变化不大,请使用此选项。
特定于 wxTIFFHandler
的选项(在 wx 中未实现)
wxIMAGE_OPTION_TIFF_BITSPERSAMPLE:
每个样本(通道)的位数。目前支持 1 和 8 的值。值为 1 会生成黑白图像。值为 8(默认值)可能表示灰度或 RGB,具体取决于wxIMAGE_OPTION_TIFF_SAMPLESPERPIXEL
的值。wxIMAGE_OPTION_TIFF_SAMPLESPERPIXEL:
每个像素的样本(通道)数。目前支持 1 和 3 的值。值为 1 会生成灰度(默认情况下)或黑白图像,具体取决于wxIMAGE_OPTION_TIFF_BITSPERSAMPLE
的值。值为 3(默认值)将生成 RGB 图像。wxIMAGE_OPTION_TIFF_COMPRESSION:
压缩类型。默认情况下,它设置为 1 (COMPRESSION_NONE)。典型的其他值为 5 (COMPRESSION_LZW) 和 7 (COMPRESSION_JPEG)。有关更多选项,请参阅 tiff.h。wxIMAGE_OPTION_TIFF_PHOTOMETRIC:
指定光度解释。默认情况下,RGB 图像设置为 2 (PHOTOMETRIC_RGB),灰度或黑白图像设置为 0 (PHOTOMETRIC_MINISWHITE)。它也可以设置为 1 (PHOTOMETRIC_MINISBLACK),将最低值视为黑色,最高值视为白色。如果您想要灰度图像,只需指定wxIMAGE_OPTION_TIFF_PHOTOMETRIC
并将其设置为 PHOTOMETRIC_MINISWHITE 或 PHOTOMETRIC_MINISBLACK 即可。其他值会自动处理。
wxGIFHandler
特定的选项(在 wx 中未实现)
wxIMAGE_OPTION_GIF_TRANSPARENCY:
如何处理透明像素。默认情况下,透明像素的颜色会更改为亮粉色,这样如果图像在没有透明度的情况下意外绘制,就会很明显。通常,这不会被注意到,因为这些像素不会被渲染。但在某些情况下,可能需要加载 GIF 而不对其颜色进行任何修改。使用wxIMAGE_OPTION_GIF_TRANSPARENCY_UNCHANGED
来保持颜色正确。使用wxIMAGE_OPTION_GIF_TRANSPARENCY_HIGHLIGHT
将透明像素转换为粉色(默认)。此选项已在 wxWidgets 3.1.1 中添加。
注意:组合选项 wxIMAGE_OPTION_TIFF_SAMPLESPERPIXEL
、wxIMAGE_OPTION_TIFF_BITSPERSAMPLE
和 wxIMAGE_OPTION_TIFF_PHOTOMETRIC
时要小心。虽然采取了一些措施来防止非法组合和/或值,但仍然很容易滥用它们,并以损坏的图像或崩溃的形式产生无效的结果。
返回:选项的值,如果未找到则返回 0。如果 0 可以是有效的选项值,请使用 hasOption/2
。
参见
-spec getOrFindMaskColour(This) -> Result when Result :: {Res :: boolean(), R :: integer(), G :: integer(), B :: integer()}, This :: wxImage().
获取当前掩码颜色或查找可以用作掩码颜色的合适的未使用颜色。
如果图像当前有掩码,则返回 true。
-spec getPalette(This) -> wxPalette:wxPalette() when This :: wxImage().
返回与图像关联的调色板。
目前,调色板仅在 Windows 下转换为 wxBitmap
时使用。
一些 wxImage
处理程序已修改为在图像文件中存在调色板时设置调色板(通常是 GIF 或 PNG 格式的 256 色或更少颜色的图像)。
返回给定坐标处的红色强度。
-spec getSubImage(This, Rect) -> wxImage() when This :: wxImage(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
只要矩形完全属于图像,则返回当前图像的子图像。
获取图像的宽度(以像素为单位)。
参见:getHeight/1
如果此图像具有 alpha 通道,则返回 true,否则返回 false。
参见
如果存在活动的掩码,则返回 true,否则返回 false。
-spec hasOption(This, Name) -> boolean() when This :: wxImage(), Name :: unicode:chardata().
如果存在给定选项,则返回 true。
该函数对 name
不区分大小写。
当前支持的选项列表在 getOption/2
和 getOptionInt/2
函数文档中。
参见
-spec initAlpha(This) -> ok when This :: wxImage().
初始化图像 alpha 通道数据。
如果图像已经有 alpha 数据,则调用它会出错。如果它没有,alpha 数据将默认初始化为所有像素完全不透明。但如果图像有掩码颜色,则所有掩码像素将完全透明。
-spec initStandardHandlers() -> ok.
仅供内部使用。
添加标准图像格式处理程序。它目前仅安装 wxBMPHandler,供 wxBitmap
使用。
此函数由 wxWidgets 在启动时调用,用户不应调用。
参见:?wxInitAllImageHandlers()
如果存在图像数据,则返回 true。
-spec isTransparent(This, X, Y, [Option]) -> boolean() when This :: wxImage(), X :: integer(), Y :: integer(), Option :: {threshold, integer()}.
如果给定像素是透明的,则返回 true。即,如果此图像有遮罩,则该像素具有遮罩颜色;或者,如果此图像有 Alpha 通道,且此像素的 Alpha 值严格小于 threshold
,则返回 true。
-spec loadFile(This, Name) -> boolean() when This :: wxImage(), Name :: unicode:chardata().
-spec loadFile(This, Name, [Option]) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Option :: {type, wx:wx_enum()} | {index, integer()}.
从文件加载图像。
如果没有提供处理程序类型,库将尝试自动检测格式。
-spec loadFile(This, Name, Mimetype, [Option]) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Mimetype :: unicode:chardata(), Option :: {index, integer()}.
从文件加载图像。
如果没有提供处理程序类型,库将尝试自动检测格式。
等效于 mirror(This, [])
。
-spec mirror(This, [Option]) -> wxImage() when This :: wxImage(), Option :: {horizontally, boolean()}.
返回图像的镜像副本。
参数 horizontally
指示方向。
-spec new() -> wxImage().
创建一个没有 Alpha 通道的空的 wxImage
对象。
-spec new(Name) -> wxImage() when Name :: unicode:chardata(); (Sz) -> wxImage() when Sz :: {W :: integer(), H :: integer()}.
等效于:new/2
-spec new(Width, Height) -> wxImage() when Width :: integer(), Height :: integer(); (Name, [Option]) -> wxImage() when Name :: unicode:chardata(), Option :: {type, wx:wx_enum()} | {index, integer()}; (Sz, Data) -> wxImage() when Sz :: {W :: integer(), H :: integer()}, Data :: binary(); (Sz, [Option]) -> wxImage() when Sz :: {W :: integer(), H :: integer()}, Option :: {clear, boolean()}.
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
-spec new(Width, Height, Data) -> wxImage() when Width :: integer(), Height :: integer(), Data :: binary(); (Width, Height, [Option]) -> wxImage() when Width :: integer(), Height :: integer(), Option :: {clear, boolean()}; (Name, Mimetype, [Option]) -> wxImage() when Name :: unicode:chardata(), Mimetype :: unicode:chardata(), Option :: {index, integer()}; (Sz, Data, Alpha) -> wxImage() when Sz :: {W :: integer(), H :: integer()}, Data :: binary(), Alpha :: binary().
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
-spec new(Width, Height, Data, Alpha) -> wxImage() when Width :: integer(), Height :: integer(), Data :: binary(), Alpha :: binary().
从内存中的数据创建图像。
如果 static_data
为 false,则 wxImage
将获取数据的所有权并在之后释放它。为此,必须使用 malloc
分配它。
等效于:isOk/1
-spec removeHandler(Name) -> boolean() when Name :: unicode:chardata().
查找具有给定名称的处理程序,并将其删除。
处理程序也会被删除。
返回:如果找到并删除处理程序,则返回 true,否则返回 false。
-spec replace(This, R1, G1, B1, R2, G2, B2) -> ok when This :: wxImage(), R1 :: integer(), G1 :: integer(), B1 :: integer(), R2 :: integer(), G2 :: integer(), B2 :: integer().
将由 r1
,g1,b1 指定的颜色替换为颜色 r2
,g2,b2。
-spec rescale(This, Width, Height, [Option]) -> wxImage() when This :: wxImage(), Width :: integer(), Height :: integer(), Option :: {quality, wx:wx_enum()}.
通过缩放来就地更改图像的大小:调用此函数后,图像将具有给定的宽度和高度。
有关 quality
参数的说明,请参阅 scale/4
函数。返回(修改后的)图像本身。
参见:scale/4
-spec resize(This, Size, Pos, [Option]) -> wxImage() when This :: wxImage(), Size :: {W :: integer(), H :: integer()}, Pos :: {X :: integer(), Y :: integer()}, Option :: {r, integer()} | {g, integer()} | {b, integer()}.
通过添加具有给定颜色的边框或根据需要裁剪,就地更改图像的大小,而不进行缩放。
图像以给定的 size
和背景颜色粘贴到新图像中,位置 pos
相对于新图像的左上角。
如果 red
= green = blue = -1,则使用当前掩码颜色(如果已设置),或者查找、使用和设置适合任何新暴露区域的掩码颜色。
返回:(修改后的)图像本身。
参见:size/4
等效于 rotate90(This, [])
。
-spec rotate90(This, [Option]) -> wxImage() when This :: wxImage(), Option :: {clockwise, boolean()}.
返回图像的副本,该副本按照 clockwise
指示的方向旋转了 90 度。
-spec rotate(This, Angle, RotationCentre, [Option]) -> wxImage() when This :: wxImage(), Angle :: number(), RotationCentre :: {X :: integer(), Y :: integer()}, Option :: {interpolating, boolean()} | {offset_after_rotation, {X :: integer(), Y :: integer()}}.
将图像围绕给定点旋转 angle
弧度。
将 true 传递给 interpolating
会产生更好的图像质量,但速度较慢。
如果图像有掩码,则掩码颜色用于旋转图像背景中未覆盖的像素。否则,将使用黑色 (rgb 0, 0, 0)。
返回旋转后的图像,保持此图像不变。
将图像中每个像素的色调旋转 angle
,该值是一个介于 -1.0 到 +1.0 之间的双精度浮点数,其中 -1.0 对应于 -360 度,+1.0 对应于 +360 度。
-spec saveFile(This, Name) -> boolean() when This :: wxImage(), Name :: unicode:chardata().
将图像保存在指定的文件中。
文件类型由文件名的扩展名确定。请注意,如果扩展名无法识别,此函数可能会失败!您可以使用上述形式之一将图像保存到具有非标准扩展名的文件中。
-spec saveFile(This, Name, Type) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Type :: wx:wx_enum(); (This, Name, Mimetype) -> boolean() when This :: wxImage(), Name :: unicode:chardata(), Mimetype :: unicode:chardata().
将图像保存在指定的文件中。
-spec scale(This, Width, Height, [Option]) -> wxImage() when This :: wxImage(), Width :: integer(), Height :: integer(), Option :: {quality, wx:wx_enum()}.
返回图像的缩放版本。
这对于一般缩放位图也很有用,因为缩放位图的唯一其他方法是将 wxMemoryDC
复制到另一个 wxMemoryDC
中。
参数 quality
确定用于重采样图像的方法,请参阅 wxImageResizeQuality 文档。
应该注意的是,尽管使用 wxIMAGE_QUALITY_HIGH
会产生外观更好的结果,但它是一种较慢的方法。降采样将使用盒式平均方法,该方法似乎运行非常快。如果您使用此方法对较大的图像进行上采样,您很可能会注意到它会慢一些,在极端情况下,由于双三次算法必须处理大量数据,它会慢很多。
还应该注意的是,当使用单一掩码颜色进行透明处理时,高质量缩放可能无法按预期工作,因为缩放会模糊图像,从而部分去除掩码。使用 alpha 通道将起作用。
示例
参见:rescale/4
此函数类似于 setData/4
并且具有类似的限制。
但是,传递给它的指针可能为 NULL,在这种情况下,该函数将在内部分配 alpha 数组 - 这对于将 alpha 通道数据添加到没有任何 alpha 通道的图像很有用。
如果指针不为 NULL,则它必须为每个图像像素有一个字节,并使用 malloc() 分配。wxImage
获取指针的所有权,除非 static_data
参数设置为 true,否则将释放它 - 在这种情况下,调用者应该这样做。
-spec setAlpha(This, X, Y, Alpha) -> ok when This :: wxImage(), X :: integer(), Y :: integer(), Alpha :: integer().
设置给定像素的 Alpha 值。
仅当图像具有 alpha 通道数据时才应调用此函数,请使用 hasAlpha/1
检查此项。
设置图像数据,而不执行检查。
给定的数据必须具有大小 (widthheight3),否则结果将是不可预测的。如果您不确定您知道自己在做什么,请不要使用此方法。
数据必须已使用 malloc()
分配,NOT
使用 operator
new 分配。
如果 static_data
为 false,则在此调用之后,数据的指针归 wxImage
对象所有,该对象将负责删除它。请勿将通过 getData/1
获取的指针传递给此函数。
-spec setData(This, Data, New_width, New_height) -> ok when This :: wxImage(), Data :: binary(), New_width :: integer(), New_height :: integer().
这是一个重载成员函数,为方便起见提供。它与上述函数的不同之处仅在于它接受的参数。
-spec setMask(This) -> ok when This :: wxImage().
等效于 setMask(This, [])
。
指定是否存在遮罩。
掩码的区域由当前掩码颜色确定。
-spec setMaskColour(This, Red, Green, Blue) -> ok when This :: wxImage(), Red :: integer(), Green :: integer(), Blue :: integer().
为此图像设置遮罩颜色(并告诉图像使用遮罩)。
-spec setMaskFromImage(This, Mask, Mr, Mg, Mb) -> boolean() when This :: wxImage(), Mask :: wxImage(), Mr :: integer(), Mg :: integer(), Mb :: integer().
设置图像的遮罩,以便在遮罩中具有 mr,mg,mb RGB 值的像素将在图像中被遮罩。
这是通过首先在图像中找到未使用的颜色,将此颜色设置为掩码颜色,然后使用此颜色绘制图像中掩码中具有给定 RGB 值的所有像素来完成的。
参数 mask
是从中提取掩码形状的掩码图像。它必须与图像具有相同的尺寸。
参数 mr
、mg
、mb
是掩码中用于创建掩码的像素的 RGB 值。
返回:如果掩码与图像的尺寸不相同,或者如果没有剩余未使用的颜色,则返回 false。如果掩码已成功应用,则返回 true。
注意:请注意,此方法涉及计算直方图,这是一个计算密集型操作。
-spec setOption(This, Name, Value) -> ok when This :: wxImage(), Name :: unicode:chardata(), Value :: integer(); (This, Name, Value) -> ok when This :: wxImage(), Name :: unicode:chardata(), Value :: unicode:chardata().
设置用户定义的选项。
该函数对 name
不区分大小写。
例如,当保存为 JPEG 文件时,使用选项 quality
,该选项是介于 0 到 100 之间的数字(0 表示非常糟糕,100 表示非常好)。
当前支持的选项列表在 getOption/2
和 getOptionInt/2
函数文档中。
参见
-spec setPalette(This, Palette) -> ok when This :: wxImage(), Palette :: wxPalette:wxPalette().
将调色板与图像关联。
-spec setRGB(This, Rect, Red, Green, Blue) -> ok when This :: wxImage(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, Red :: integer(), Green :: integer(), Blue :: integer().
设置给定矩形内像素的颜色。
此例程对坐标执行边界检查,因此可以认为是操作数据的安全方法。
-spec setRGB(This, X, Y, R, G, B) -> ok when This :: wxImage(), X :: integer(), Y :: integer(), R :: integer(), G :: integer(), B :: integer().
设置给定 x 和 y 坐标处的像素颜色。
-spec size(This, Size, Pos, [Option]) -> wxImage() when This :: wxImage(), Size :: {W :: integer(), H :: integer()}, Pos :: {X :: integer(), Y :: integer()}, Option :: {r, integer()} | {g, integer()} | {b, integer()}.
返回此图像的调整大小的版本,而不进行缩放,方法是添加具有给定颜色的边框或根据需要进行裁剪。
图像以给定的 size
和背景颜色粘贴到新图像中,位置 pos
相对于新图像的左上角。
如果 red
= green = blue = -1,则通过用图像掩码颜色填充它们(如果当前未设置,则会自动分配),使较大图像中未被此图像覆盖的区域变为透明。
否则,这些区域将用具有指定 RGB 分量的颜色填充。
参见:resize/4